Files
TTW_Bot/udatabase.h
T
PTyTb eb494ae8fa создал менеджер донатов
- добавление
- удаление
- сохранение
2026-02-22 09:18:00 +03:00

158 lines
4.6 KiB
C++

#ifndef UDATABASE_H
#define UDATABASE_H
#include "donationmanager.h"
#include "qlistwidget.h"
#include <QObject>
#include <QString>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QVariant>
#include <QDebug>
#include <QFile>
#include <QTableWidget>
#include "timerinfo.h"
#include "webserverchat.h"
#include "webservernotify.h"
struct ChatSettings {
int id;
QString name;
QString type; // "chat" или "notification"
int port;
QStringList fontList;
QString backgroundColor;
QString blockColor;
QString borderColor;
int borderSize;
int padding;
int transparency;
QString fontFamily;
int fontSize;
QString fontColor;
bool freez;
int messageTimeout;
int maxMsgCount;
bool deleteByTime;
};
struct NotificationSettings {
int id;
QString name;
QString type;
int port;
QString blockColor;
QString borderColor;
int borderSize;
int transparency;
QString pageBackgroundColor;
QString titleFamily;
int titleSize;
QString titleColor;
QString contentFamily;
int contentSize;
QString contentColor;
int duration;
QDateTime createdAt;
};
struct ActionData {
int id = -1;
int type = 0; // 0 - клавиши, 1 - звук, 2 - уведомление
QString keyCombination;
QString audioFile;
QString notificationTitle;
QString notificationDescription;
QString notificationImage;
QString notificationSound;
};
class uDataBase : public QObject
{
Q_OBJECT
// Информация о таймере
public:
// Конструктор с указанием файла базы данных
explicit uDataBase(const QString& dbFileName, QObject* parent = nullptr);
// Деструктор
~uDataBase();
// Чтение настройки
QString readSetting(const QString& aName, const QString& aDefault = "");
// Запись настройки
bool writeSetting(const QString& aName, const QString& aValue);
bool LoadTableWidget(QTableWidget *tableWidget);
bool clearTable(const QString &tableName);
bool createTableForWidget(const QString &tableName, int columnCount);
bool tableExists(const QString &tableName);
bool SaveTableWidget(QTableWidget *tableWidget);
bool SaveTimers(QTableWidget *tableWidget, const QList<TimerInfo> &timers);
bool LoadTimers(QTableWidget *tableWidget, QList<TimerInfo> &timers);
bool SaveGroupResponses(const QString &groupName, const QStringList &responses);
bool createGroupResponseTable();
bool DeleteResponse(const QString &groupName, const QString &ResponseName);
bool DeleteGroup(const QString &groupName);
bool AddGroupResponse(const QString &groupName, const QString &response);
QString ProcessResponseTemplate(const QString &templateText);
QString GetRandomResponse(const QString &groupName);
bool LoadRandomResponses(const QString &groupName, QListWidget *listWidget);
bool LoadRandomGroups(QListWidget *listWidget);
QString ProcessResponseTemplateRecursive(const QString &templateText, int depth);
bool createChatsTable();
bool saveChat(const QString &name, const QString &type,
HttpServerChat *server, const QString &fontList);
bool updateChat(const QString &name, HttpServerChat *server,
const QString &fontList, int oldPort);
bool deleteChat(int port);
QList<ChatSettings> loadAllChats();
// Методы для уведомлений
bool createNotificationsTable();
bool saveNotification(const QString &name, HttpServer *server);
bool updateNotification(const QString &name, HttpServer *server, int oldPort);
QList<NotificationSettings> loadAllNotifications();
bool deleteNotification(int port);
// Проверка подключения к БД
bool isConnected() const;
bool close();
// Получение последней ошибки
QString lastError() const;
bool createActionsTable();
bool saveAction(const ActionData &action);
bool updateAction(int id, const ActionData &action);
bool deleteAction(int id);
QList<ActionData> loadAllActions();
bool clearActionsTable();
bool createDonationTriggersTable();
int saveDonationTrigger(const DonationTrigger &trigger);
bool deleteDonationTrigger(int id);
QList<DonationTrigger> loadAllDonationTriggers();
private:
// Инициализация базы данных (создание таблицы, если нужно)
bool initializeDatabase();
QSqlDatabase m_db;
QString m_dbFileName;
QString m_lastError;
};
#endif // DBSETTINGS_H