Files
StationManager/database.h
2026-04-05 16:14:54 +03:00

78 lines
1.8 KiB
C++

#ifndef DATABASE_H
#define DATABASE_H
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
#include <QFile>
#include <QCryptographicHash>
struct User {
int id;
QString username;
QString password;
QString role;
};
struct Route {
int id;
QString routeName;
QString departureTime;
double price;
int totalSeats;
int availableSeats;
};
struct Ticket {
int id;
int routeId;
QString routeName;
QString passengerName;
QString documentNumber;
int seatCount;
double totalPrice;
int sellerId;
QString sellerName;
QString saleDate;
};
class Database {
public:
static Database& instance();
bool initialize();
bool authenticate(const QString& username, const QString& password);
User getUser(const QString& username);
QVector<User> getAllUsers();
bool addUser(const QString& username, const QString& password, const QString& role);
bool deleteUser(int id);
QVector<Route> getAllRoutes();
Route getRoute(int id);
bool addRoute(const QString& routeName, const QString& departureTime,
double price, int totalSeats);
bool updateRoute(const Route& route);
bool deleteRoute(int id);
bool updateAvailableSeats(int routeId, int change);
QVector<Ticket> getTicketsByRoute(int routeId);
QVector<Ticket> getAllTickets();
bool addTicket(int routeId, const QString& passengerName,
const QString& documentNumber, int seatCount,
int sellerId);
bool deleteTicket(int id);
int getLastTicketId();
private:
Database() = default;
~Database() = default;
Database(const Database&) = delete;
Database& operator=(const Database&) = delete;
QSqlDatabase m_db;
QString hashPassword(const QString& password);
};
#endif