создал менеджер донатов

- добавление
- удаление
- сохранение
This commit is contained in:
2026-02-22 09:18:00 +03:00
parent 05662be287
commit eb494ae8fa
10 changed files with 499 additions and 11 deletions
+93
View File
@@ -1571,3 +1571,96 @@ bool uDataBase::clearActionsTable()
query.exec("DELETE FROM sqlite_sequence WHERE name='actions'");
return true;
}
bool uDataBase::createDonationTriggersTable()
{
QSqlQuery query(m_db);
QString sql =
"CREATE TABLE IF NOT EXISTS donation_triggers ("
" id INTEGER PRIMARY KEY AUTOINCREMENT,"
" name TEXT NOT NULL,"
" rule TEXT NOT NULL,"
" created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP"
")";
if (!query.exec(sql)) {
m_lastError = query.lastError().text();
qWarning() << "Failed to create donation_triggers table:" << m_lastError;
return false;
}
return true;
}
int uDataBase::saveDonationTrigger(const DonationTrigger &trigger)
{
if (!m_db.isOpen()) {
m_lastError = "Database is not open";
return -1;
}
if (!tableExists("donation_triggers")) {
if (!createDonationTriggersTable()) return -1;
}
QSqlQuery query(m_db);
query.prepare("INSERT INTO donation_triggers (name, rule) VALUES (:name, :rule)");
query.bindValue(":name", trigger.name);
query.bindValue(":rule", trigger.rule);
if (!query.exec()) {
m_lastError = query.lastError().text();
qWarning() << "Failed to save donation trigger:" << m_lastError;
return -1;
}
return query.lastInsertId().toInt();
}
bool uDataBase::deleteDonationTrigger(int id)
{
if (!m_db.isOpen()) {
m_lastError = "Database is not open";
return false;
}
QSqlQuery query(m_db);
query.prepare("DELETE FROM donation_triggers WHERE id = :id");
query.bindValue(":id", id);
if (!query.exec()) {
m_lastError = query.lastError().text();
qWarning() << "Failed to delete donation trigger:" << m_lastError;
return false;
}
return true;
}
QList<DonationTrigger> uDataBase::loadAllDonationTriggers()
{
QList<DonationTrigger> list;
if (!m_db.isOpen()) {
m_lastError = "Database is not open";
return list;
}
if (!tableExists("donation_triggers")) {
return list; // таблицы нет – пусто
}
QSqlQuery query(m_db);
query.prepare("SELECT id, name, rule FROM donation_triggers ORDER BY id");
if (!query.exec()) {
m_lastError = query.lastError().text();
qWarning() << "Failed to load donation triggers:" << m_lastError;
return list;
}
while (query.next()) {
DonationTrigger t;
t.id = query.value("id").toInt();
t.name = query.value("name").toString();
t.rule = query.value("rule").toString();
// Парсить rule будем в DonationManager, здесь только храним
list.append(t);
}
return list;
}