Revision 45135a14
Von Christian Ehringfeld vor fast 9 Jahren hinzugefügt
src/database.cpp | ||
---|---|---|
*/
|
||
|
||
#include "database.h"
|
||
#include "logger.h"
|
||
#include <QDir>
|
||
using namespace CuteEntityManager;
|
||
|
||
Database::Database(QSqlDatabase database) {
|
||
Database::Database(QSqlDatabase database, bool loggerActivated, bool logQueries, bool logErrors) {
|
||
this->database = database;
|
||
this->init();
|
||
this->connectionName = this->database.connectionName();
|
||
|
||
this->initLogger(loggerActivated,logQueries,logErrors);
|
||
}
|
||
|
||
Database::Database(QString databaseType, QString connectionName,
|
||
QString hostname,
|
||
QString databasename,
|
||
QString username, QString password, qint64 port) {
|
||
QString username, QString password, qint64 port, bool loggerActivated, bool logQueries, bool logErrors) {
|
||
this->database = QSqlDatabase::addDatabase(databaseType, connectionName);
|
||
this->connectionName = connectionName;
|
||
if (hostname != QString("")) {
|
||
... | ... | |
this->database.setPort(port);
|
||
}
|
||
this->init();
|
||
this->initLogger(loggerActivated,logQueries,logErrors);
|
||
}
|
||
|
||
void Database::init() {
|
||
this->database.open();
|
||
this->supportTransactions = this->database.driver()->hasFeature(
|
||
QSqlDriver::Transactions);
|
||
QSqlDriver::Transactions);
|
||
}
|
||
|
||
void Database::initLogger(bool activated, bool logQueries, bool logErrors) {
|
||
this->logQueries = logQueries;
|
||
this->logErrors = logErrors;
|
||
if(activated) {
|
||
this->logger = new Logger(QDir::currentPath() + "/db" + this->connectionName + "db.log");
|
||
}
|
||
}
|
||
|
||
Database::~Database() {
|
||
if(this->logger) {
|
||
delete this->logger;
|
||
this->logger = nullptr;
|
||
}
|
||
if (this->database.isOpen()) {
|
||
this->database.close();
|
||
}
|
||
... | ... | |
QSqlQuery sqlquery = QSqlQuery(this->database);
|
||
for (int var = 0; var < queries.size(); ++var) {
|
||
sqlquery.exec(queries.at(var));
|
||
this->debugQuery(sqlquery);
|
||
}
|
||
ok = this->commitTransaction();
|
||
} else {
|
||
... | ... | |
}
|
||
|
||
QSharedPointer<Schema> Database::getSchema(DatabaseType db,
|
||
QSharedPointer<Database> database) {
|
||
QSharedPointer<Database> database) {
|
||
switch (db) {
|
||
case DatabaseType::SQLITE:
|
||
return QSharedPointer<Schema>(new SqliteSchema(database));;
|
||
break;
|
||
// case PGSQL:
|
||
// return QSharedPointer<Schema>(new PgSqlSchema());
|
||
// break;
|
||
// case MYSQL:
|
||
// return QSharedPointer<Schema>(new MysqlSchema());
|
||
// break;
|
||
// case PGSQL:
|
||
// return QSharedPointer<Schema>(new PgSqlSchema());
|
||
// break;
|
||
// case MYSQL:
|
||
// return QSharedPointer<Schema>(new MysqlSchema());
|
||
// break;
|
||
default:
|
||
return QSharedPointer<Schema>(new SqliteSchema(database));
|
||
break;
|
||
... | ... | |
}
|
||
|
||
void Database::debugQuery(const QSqlQuery &query) const {
|
||
qDebug() << query.executedQuery();
|
||
if(this->logger) {
|
||
if(this->logErrors) {
|
||
this->logger->lastError(query,this->logQueries);
|
||
}
|
||
} else {
|
||
qDebug() << query.executedQuery();
|
||
}
|
||
}
|
||
|
||
bool Database::select(QSqlQuery &query) {
|
Auch abrufbar als: Unified diff
integration of logger component