#include "SettingsDAO.h" #include #include #include #include "DatabaseManager.h" QString SettingsDAO::get(const QString &key, const QString &defaultValue) { QSqlQuery query(DatabaseManager::instance().database()); query.prepare("SELECT value FROM settings WHERE key = :key LIMIT 1"); query.bindValue(":key", key); if (!query.exec()) { qWarning() << "SettingsDAO::get error:" << query.lastError().text(); return defaultValue; } if (query.next()) { return query.value(0).toString(); } return defaultValue; } void SettingsDAO::set(const QString &key, const QString &value) { QSqlQuery query(DatabaseManager::instance().database()); query.prepare(R"( INSERT INTO settings (key, value) VALUES (:key, :value) ON CONFLICT(key) DO UPDATE SET value = excluded.value )"); query.bindValue(":key", key); query.bindValue(":value", value); if (!query.exec()) { qWarning() << "SettingsDAO::set error:" << query.lastError().text(); } } void SettingsDAO::remove(const QString &key) { QSqlQuery query(DatabaseManager::instance().database()); query.prepare("DELETE FROM settings WHERE key = :key"); query.bindValue(":key", key); if (!query.exec()) { qWarning() << "SettingsDAO::remove error:" << query.lastError().text(); } } qint64 SettingsDAO::getLong(const QString &key, qint64 defaultValue) { const QString val = get(key); if (val.isEmpty()) return defaultValue; bool ok; const qint64 result = val.toLongLong(&ok); return ok ? result : defaultValue; } void SettingsDAO::setLong(const QString &key, qint64 value) { set(key, QString::number(value)); }