/
seneka.y
/
ClientServer
Обзор
Документация
Войти
/
seneka.y
/
ClientServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
server/database.h
89 строк
4 KB
Julia Sinika
Initial commit
09 ноя 2025, 22:05
09 ноя 2025, 22:05
bfef146
Код
Авторство
О чём код?
#ifndef DATABASE_H #define DATABASE_H #include <QSqlDatabase> #include <QJsonArray> #include <QMutex> /** * @class Database * @brief Singleton для работы с базой данных SQLite * * Обеспечивает безопасный доступ к БД из разных потоков. * Каждый поток получает собственное подключение к БД. */ class Database { public: /** * @brief Получить единственный экземпляр Database (Singleton) * @return Ссылка на экземпляр Database */ static Database& instance(); /** * @brief Инициализировать базу данных * @param dbPath Путь к файлу БД (по умолчанию "users.db") * @return true если успешно инициализирована, false в случае ошибки */ bool initialize(const QString& dbPath = "users.db"); /** * @brief Добавить нового пользователя в БД * @param username Имя пользователя * @param email Email пользователя * @param errorMsg Сообщение об ошибке (заполняется при неудаче) * @return true если добавлено успешно, false в случае ошибки */ bool addUser(const QString& username, const QString& email, QString& errorMsg); /** * @brief Получить всех пользователей из БД * @param errorMsg Сообщение об ошибке (заполняется при неудаче) * @return JSON массив с пользователями */ QJsonArray getAllUsers(QString& errorMsg); /** * @brief Удалить пользователя по ID * @param id ID пользователя * @param errorMsg Сообщение об ошибке (заполняется при неудаче) * @return true если удалено успешно, false в случае ошибки */ bool deleteUser(int id, QString& errorMsg); /** * @brief Обновить данные пользователя * @param id ID пользователя * @param username Новое имя пользователя * @param email Новый email * @param errorMsg Сообщение об ошибке (заполняется при неудаче) * @return true если обновлено успешно, false в случае ошибки */ bool updateUser(int id, const QString& username, const QString& email, QString& errorMsg); private: Database(); ~Database(); Database(const Database&) = delete; Database& operator=(const Database&) = delete; /** * @brief Создать таблицу users в БД * @return true если таблица создана, false в случае ошибки */ bool createTable(); /** * @brief Получить подключение к БД для текущего потока * @return QSqlDatabase подключение для текущего потока * * Каждому потоку выдается собственное подключение к БД * для избежания конфликтов между потоками. */ QSqlDatabase getConnection(); QMutex m_mutex; ///< Мьютекс для синхронизации доступа к БД QString m_dbPath; ///< Путь к файлу БД }; #endif // DATABASE_H