| 128 | } |
| 129 | |
| 130 | QSqlDatabase DataBaseManagement::loadDatabase(QString libraryDataPath) |
| 131 | { |
| 132 | const QString dbPath = QDir::cleanPath(libraryDataPath + "/library.ydb"); |
| 133 | if (!QFile::exists(dbPath)) { |
| 134 | return QSqlDatabase(); |
| 135 | } |
| 136 | |
| 137 | QString threadId = QString::number((quintptr)QThread::currentThreadId(), 16); |
| 138 | QString connectionName = dbPath + threadId; |
| 139 | |
| 140 | QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", connectionName); |
| 141 | db.setConnectOptions("QSQLITE_BUSY_TIMEOUT=2000"); |
| 142 | db.setDatabaseName(dbPath); |
| 143 | if (!db.open()) { |
| 144 | const QString error = db.lastError().text(); |
| 145 | db = QSqlDatabase(); |
| 146 | QSqlDatabase::removeDatabase(connectionName); |
| 147 | QLOG_ERROR() << "loadDatabase: failed to open" << dbPath << error; |
| 148 | return QSqlDatabase(); |
| 149 | } |
| 150 | QSqlQuery pragmaFK(db); |
| 151 | if (!pragmaFK.exec("PRAGMA foreign_keys = ON")) { |
| 152 | QLOG_ERROR() << "loadDatabase: failed to enable foreign keys for" << dbPath << pragmaFK.lastError().text(); |
| 153 | } |
| 154 | |
| 155 | return db; |
| 156 | } |
| 157 | |
| 158 | QSqlDatabase DataBaseManagement::loadDatabaseFromFile(QString filePath) |
| 159 | { |
nothing calls this directly
no test coverage detected