TTW_Bot/udatabase.h

137 lines
3.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef UDATABASE_H
#define UDATABASE_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;
};
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;
private:
// Инициализация базы данных (создание таблицы, если нужно)
bool initializeDatabase();
QSqlDatabase m_db;
QString m_dbFileName;
QString m_lastError;
};
#endif // DBSETTINGS_H