Command: Take SqliteDbService instead of connection string
This commit is contained in:
parent
62e896608f
commit
f24f6bd966
@ -3,51 +3,3 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
#include "qssgeneralexception.h"
|
#include "qssgeneralexception.h"
|
||||||
|
|
||||||
bool Command::fileExistsInDatabase(QSqlDatabase &db, QString path, qint64 mtime)
|
|
||||||
{
|
|
||||||
auto query = QSqlQuery("SELECT 1 FROM file WHERE path = ? and mtime = ?", db);
|
|
||||||
query.addBindValue(path);
|
|
||||||
query.addBindValue(mtime);
|
|
||||||
if(!query.exec())
|
|
||||||
{
|
|
||||||
throw QSSGeneralException("Error while trying to query for file existance");
|
|
||||||
}
|
|
||||||
if(!query.next())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return query.value(0).toBool();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Command::fileExistsInDatabase(QSqlDatabase &db, QString path)
|
|
||||||
{
|
|
||||||
auto query = QSqlQuery("SELECT 1 FROM file WHERE path = ?", db);
|
|
||||||
query.addBindValue(path);
|
|
||||||
if(!query.exec())
|
|
||||||
{
|
|
||||||
throw QSSGeneralException("Error while trying to query for file existance");
|
|
||||||
}
|
|
||||||
if(!query.next())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return query.value(0).toBool();
|
|
||||||
}
|
|
||||||
|
|
||||||
QSqlDatabase Command::dbConnection()
|
|
||||||
{
|
|
||||||
if(dbStore.hasLocalData())
|
|
||||||
{
|
|
||||||
return dbStore.localData();
|
|
||||||
}
|
|
||||||
QSqlDatabase db =
|
|
||||||
QSqlDatabase::addDatabase("QSQLITE", "QSS" + QString::number((quint64)QThread::currentThread(), 16));
|
|
||||||
db.setDatabaseName(this->dbConnectionString);
|
|
||||||
if(!db.open())
|
|
||||||
{
|
|
||||||
Utils::error() << "Failed to open the database: " << this->dbConnectionString;
|
|
||||||
}
|
|
||||||
dbStore.setLocalData(db);
|
|
||||||
return db;
|
|
||||||
}
|
|
||||||
|
@ -6,19 +6,17 @@
|
|||||||
#include <QThreadStorage>
|
#include <QThreadStorage>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "sqlitedbservice.h"
|
||||||
class Command
|
class Command
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool fileExistsInDatabase(QSqlDatabase &db, QString path);
|
SqliteDbService *dbService;
|
||||||
bool fileExistsInDatabase(QSqlDatabase &db, QString path, qint64 mtime);
|
|
||||||
QByteArray readFile(QString path) const;
|
|
||||||
QString dbConnectionString;
|
QString dbConnectionString;
|
||||||
QThreadStorage<QSqlDatabase> dbStore;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Command(QString dbConnectionString)
|
Command(SqliteDbService &dbService)
|
||||||
{
|
{
|
||||||
this->dbConnectionString = dbConnectionString;
|
this->dbService = &dbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSqlDatabase dbConnection();
|
QSqlDatabase dbConnection();
|
||||||
|
@ -2,18 +2,11 @@
|
|||||||
#define COMMANDADD_H
|
#define COMMANDADD_H
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
enum AddFileResult
|
#include "filesaver.h"
|
||||||
{
|
|
||||||
OK,
|
|
||||||
SKIPPED,
|
|
||||||
DBFAIL
|
|
||||||
};
|
|
||||||
|
|
||||||
class CommandAdd : public Command
|
class CommandAdd : public Command
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
AddFileResult addFile(QString path);
|
SaveFileResult addFile(QString path);
|
||||||
QMutex writeMutex;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using Command::Command;
|
using Command::Command;
|
||||||
|
19
cli/main.cpp
19
cli/main.cpp
@ -19,23 +19,27 @@
|
|||||||
#include "command.h"
|
#include "command.h"
|
||||||
#include "commandadd.h"
|
#include "commandadd.h"
|
||||||
#include "commanddelete.h"
|
#include "commanddelete.h"
|
||||||
|
#include "commandupdate.h"
|
||||||
|
#include "databasefactory.h"
|
||||||
|
#include "logger.h"
|
||||||
void printUsage(QString argv0)
|
void printUsage(QString argv0)
|
||||||
{
|
{
|
||||||
qInfo() << "Usage: " << argv0 << "command";
|
qInfo() << "Usage: " << argv0 << "command";
|
||||||
}
|
}
|
||||||
|
|
||||||
Command *commandFromName(QString name, QString connectionstring)
|
Command *commandFromName(QString name, SqliteDbService &dbService)
|
||||||
{
|
{
|
||||||
if(name == "add")
|
if(name == "add")
|
||||||
{
|
{
|
||||||
return new CommandAdd(connectionstring);
|
return new CommandAdd(dbService);
|
||||||
}
|
}
|
||||||
if(name == "delete")
|
if(name == "delete")
|
||||||
{
|
{
|
||||||
return new CommandDelete(connectionstring);
|
return new CommandDelete(dbService);
|
||||||
}
|
}
|
||||||
if(name == "update")
|
if(name == "update")
|
||||||
{
|
{
|
||||||
|
return new CommandUpdate(dbService);
|
||||||
}
|
}
|
||||||
if(name == "search")
|
if(name == "search")
|
||||||
{
|
{
|
||||||
@ -56,7 +60,10 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
QString commandName = args.first();
|
QString commandName = args.first();
|
||||||
Command *cmd = commandFromName(commandName, QProcessEnvironment::systemEnvironment().value("QSS_PATH"));
|
QString connectionString = QProcessEnvironment::systemEnvironment().value("QSS_PATH");
|
||||||
|
DatabaseFactory dbFactory(connectionString);
|
||||||
|
SqliteDbService dbService(dbFactory);
|
||||||
|
Command *cmd = commandFromName(commandName, dbService);
|
||||||
if(cmd != nullptr)
|
if(cmd != nullptr)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -65,12 +72,12 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
catch(const QSSGeneralException &e)
|
catch(const QSSGeneralException &e)
|
||||||
{
|
{
|
||||||
Utils::error() << "Exception caught, message: " << e.message << endl;
|
Logger::error() << "Exception caught, message: " << e.message << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Utils::error() << "Unknown command " << commandName << endl;
|
Logger::error() << "Unknown command " << commandName << endl;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user