Command: Take SqliteDbService instead of connection string
This commit is contained in:
		| @@ -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; | ||||||
| } | } | ||||||
|   | |||||||
		Referens i nytt ärende
	
	Block a user