Command: Take SqliteDbService instead of connection string
This commit is contained in:
		| @@ -4,49 +4,5 @@ | ||||
| #include "command.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,18 +6,17 @@ | ||||
| #include <QThreadStorage> | ||||
| #include <QVariant> | ||||
| #include "utils.h" | ||||
| #include "sqlitedbservice.h" | ||||
| class Command | ||||
| { | ||||
| protected: | ||||
|     bool fileExistsInDatabase(QSqlDatabase &db, QString path); | ||||
|     bool fileExistsInDatabase(QSqlDatabase &db, QString path, qint64 mtime); | ||||
|     QByteArray readFile(QString path) const; | ||||
|  | ||||
|     SqliteDbService *dbService; | ||||
|     QString dbConnectionString; | ||||
|     QThreadStorage<QSqlDatabase> dbStore; | ||||
| public: | ||||
|     Command(QString dbConnectionString) | ||||
|     Command(SqliteDbService &dbService) | ||||
|     { | ||||
|         this->dbConnectionString = dbConnectionString; | ||||
|         this->dbService = &dbService; | ||||
|     } | ||||
|  | ||||
|     QSqlDatabase dbConnection(); | ||||
|   | ||||
| @@ -2,18 +2,11 @@ | ||||
| #define COMMANDADD_H | ||||
| #include <QMutex> | ||||
| #include "command.h" | ||||
| enum AddFileResult | ||||
| { | ||||
|     OK, | ||||
|     SKIPPED, | ||||
|     DBFAIL | ||||
| }; | ||||
|  | ||||
| #include "filesaver.h" | ||||
| class CommandAdd : public Command | ||||
| { | ||||
| private: | ||||
|     AddFileResult addFile(QString path); | ||||
|     QMutex writeMutex; | ||||
|     SaveFileResult addFile(QString path); | ||||
| public: | ||||
|     using Command::Command; | ||||
|  | ||||
|   | ||||
							
								
								
									
										20
									
								
								cli/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								cli/main.cpp
									
									
									
									
									
								
							| @@ -19,24 +19,27 @@ | ||||
| #include "command.h" | ||||
| #include "commandadd.h" | ||||
| #include "commanddelete.h" | ||||
| #include "commandupdate.h" | ||||
| #include "databasefactory.h" | ||||
| #include "logger.h" | ||||
| void printUsage(QString argv0) | ||||
| { | ||||
|     qInfo() << "Usage: " << argv0 << "command"; | ||||
| } | ||||
|  | ||||
| Command *commandFromName(QString name, QString connectionstring) | ||||
| Command *commandFromName(QString name, SqliteDbService &dbService) | ||||
| { | ||||
|     if(name == "add") | ||||
|     { | ||||
|         return new CommandAdd(connectionstring); | ||||
|         return new CommandAdd(dbService); | ||||
|     } | ||||
|     if(name == "delete") | ||||
|     { | ||||
|         return new CommandDelete(connectionstring); | ||||
|         return new CommandDelete(dbService); | ||||
|     } | ||||
|     if(name == "update") | ||||
|     { | ||||
|  | ||||
|         return new CommandUpdate(dbService); | ||||
|     } | ||||
|     if(name == "search") | ||||
|     { | ||||
| @@ -58,7 +61,10 @@ int main(int argc, char *argv[]) | ||||
|     } | ||||
|  | ||||
|     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) | ||||
|     { | ||||
|         try | ||||
| @@ -67,12 +73,12 @@ int main(int argc, char *argv[]) | ||||
|         } | ||||
|         catch(const QSSGeneralException &e) | ||||
|         { | ||||
|             Utils::error() << "Exception caught, message: " << e.message << endl; | ||||
|             Logger::error() << "Exception caught, message: " << e.message << endl; | ||||
|         } | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         Utils::error() << "Unknown command " << commandName << endl; | ||||
|         Logger::error() << "Unknown command " << commandName << endl; | ||||
|     } | ||||
|     return 1; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user