Banking_System_Server  1.0.0
Qt-based banking app for user/admin account management, transactions, secure server communication via PostgreSQL/Supabase.
db.h
Go to the documentation of this file.
1 
8 #ifndef DB_H
9 #define DB_H
10 
11 #include "dbresult.h"
12 #include <QSqlDatabase>
13 #include <QSqlError>
14 #include <QSqlQuery>
15 #include <QStringList>
16 #include <QVariant>
17 #include <QVariantMap>
18 
19 namespace DB
20 {
21 
28 {
33  {
34  }
35 
44  DatabaseConfig(const QString& host, int port, const QString& username, const QString& password,
45  const QString& dbname) :
47  {
48  }
49 
58  void set(const QString& host, int port, const QString& username, const QString& password, const QString& dbname)
59  {
60  this->port = port;
61  this->host = host;
62  this->username = username;
63  this->password = password;
64  this->dbName = dbname;
65  }
66 
67  int port;
68  QString host;
69  QString username;
70  QString password;
71  QString dbName;
72 };
73 
80 {
81 private:
86 
87 public:
92 
100  static DatabaseManager* createInstance(bool checkDBName = false, bool newConnection = false,
101  QString* err = nullptr);
102 
112  static bool setDbSetting(const QString& host, int port, const QString& username, const QString& password,
113  const QString& dbname);
114 
120  static bool checkConnection(QString& error);
121 
127 
133  DatabaseManager* select(const QString& value);
134 
140  DatabaseManager* table(const QString& value);
141 
148  DatabaseManager* where(const QString& value, const QVariant& val = QVariant());
149 
156  DatabaseManager* like(const QString& value, const QString& val);
157 
164  DatabaseManager* likePost(const QString& value, const QString& val);
165 
172  DatabaseManager* likeNative(const QString& value, const QString& val);
173 
179  DatabaseManager* whereOr(const QString& value);
180 
186  DatabaseManager* join(const QString& value);
187 
194 
201 
207  DatabaseManager* sort(const QString& sort);
208 
214  DatabaseManager* group(const QString& group);
215 
221  QString getSelectQuery(const QString& select = QString());
222 
227  QSqlError lastError();
228 
233  QVariant lastInsertedId();
234 
239  QString lastQuery();
240 
245  DbResult exec();
246 
252  DbResult execResult(const QString& sql);
253 
259  DbResult get(const QString& tableName);
260 
266  bool exec(const QString& sqlcommand);
267 
274  bool insert(const QString& table, const QVariantMap& data);
275 
282  bool update(const QString& table, const QVariantMap& data);
283 
289  bool del(const QString& table);
290 
295  int count();
296 
302 
307  bool beginTransaction();
308 
313  bool commit();
314 
319  bool rollback();
320 
325  inline bool isSupportTransaction()
326  {
327  return isSupportTransaction_;
328  }
329 
335  {
336  Select_.clear();
337  return this;
338  }
339 
345  bool truncateTable(const QString& table);
346 
347 private:
348  static QStringList Created_;
349  static QStringList Update_;
350  static QStringList SoftDelete_;
351  bool isSupportTransaction_ = false;
352  QString Where_;
353  QString Select_;
354  QString Join_;
355  QString Table_;
356  QString Limit_;
357  QString Start_;
358  QString Sort_;
359  QString Group_;
360  QList<DatabaseManager*> Childs_;
361  DatabaseManager* Parent_;
362  QString LastQuery_;
363  QVariant InsertedId_;
364  QSqlError LastError_;
365 
370  static QSqlDatabase getDatabase();
371 
383  bool init(const QString& host, int port, const QString& username, const QString& password, const QString& dbname,
384  bool checkDBName = false, bool newConnection = false);
385 
390  void postQuery(QSqlQuery* query);
391 
397  QString dataToString(const QVariantMap& map);
398 };
399 
400 } // namespace DB
401 
402 #endif // DB_H
Manages database connections and SQL operations.
Definition: db.h:80
bool isSupportTransaction()
Checks if transactions are supported.
Definition: db.h:325
bool update(const QString &table, const QVariantMap &data)
Updates data in a specified table.
Definition: db.cpp:361
static bool checkConnection(QString &error)
Checks the database connection.
Definition: db.cpp:81
DatabaseManager * table(const QString &value)
Sets the table for the query.
Definition: db.cpp:115
QSqlError lastError()
Gets the last error occurred.
Definition: db.cpp:251
DatabaseManager * whereOr(const QString &value)
Adds an OR condition to the WHERE clause.
Definition: db.cpp:180
int count()
Gets the count of records matching the query criteria.
Definition: db.cpp:425
bool commit()
Commits a transaction.
Definition: db.cpp:453
bool truncateTable(const QString &table)
Truncates a specified table.
Definition: db.cpp:463
DatabaseManager * limit(int limit)
Adds a LIMIT clause to the query.
Definition: db.cpp:196
DatabaseManager * reset()
Resets the query settings.
Definition: db.cpp:94
DatabaseManager * clearSelect()
Clears the SELECT clause.
Definition: db.h:334
DatabaseManager * where(const QString &value, const QVariant &val=QVariant())
Adds a WHERE clause to the query.
Definition: db.cpp:121
bool del(const QString &table)
Deletes data from a specified table.
Definition: db.cpp:398
QString lastQuery()
Gets the last executed query.
Definition: db.cpp:261
DatabaseManager * sort(const QString &sort)
Adds an ORDER BY clause to the query.
Definition: db.cpp:208
DbResult exec()
Executes the built query.
Definition: db.cpp:266
DatabaseManager * like(const QString &value, const QString &val)
Adds a LIKE clause to the query.
Definition: db.cpp:138
static bool setDbSetting(const QString &host, int port, const QString &username, const QString &password, const QString &dbname)
Sets the database settings.
Definition: db.cpp:63
DatabaseManager * select(const QString &value)
Selects columns for the query.
Definition: db.cpp:107
DatabaseManager * likeNative(const QString &value, const QString &val)
Adds a native LIKE clause to the query.
Definition: db.cpp:169
QString getSelectQuery(const QString &select=QString())
Gets the SQL SELECT query.
Definition: db.cpp:222
DatabaseManager * group(const QString &group)
Adds a GROUP BY clause to the query.
Definition: db.cpp:216
DbResult execResult(const QString &sql)
Executes a SQL query.
Definition: db.cpp:286
DbResult get(const QString &tableName)
Executes a SELECT query on a specified table.
Definition: db.cpp:306
bool rollback()
Rolls back a transaction.
Definition: db.cpp:458
DatabaseManager * start(int start)
Adds an OFFSET clause to the query.
Definition: db.cpp:202
static DatabaseManager * createInstance(bool checkDBName=false, bool newConnection=false, QString *err=nullptr)
Creates an instance of DatabaseManager.
Definition: db.cpp:38
QVariant lastInsertedId()
Gets the ID of the last inserted record.
Definition: db.cpp:256
DatabaseManager * likePost(const QString &value, const QString &val)
Adds a LIKE clause with a postfix wildcard to the query.
Definition: db.cpp:158
bool beginTransaction()
Begins a transaction.
Definition: db.cpp:448
~DatabaseManager()
Destructor for DatabaseManager.
Definition: db.cpp:29
DatabaseManager * clone()
Clones the current DatabaseManager instance.
Definition: db.cpp:439
bool insert(const QString &table, const QVariantMap &data)
Inserts data into a specified table.
Definition: db.cpp:327
DatabaseManager * join(const QString &value)
Adds a JOIN clause to the query.
Definition: db.cpp:188
The DbResult class represents a result set returned from a database query.
Definition: dbresult.h:24
This file contains the declaration of the DbResult class, which represents a result set returned from...
Configuration settings for database connections.
Definition: db.h:28
DatabaseConfig()
Default constructor for DatabaseConfig.
Definition: db.h:32
void set(const QString &host, int port, const QString &username, const QString &password, const QString &dbname)
Sets the database configuration parameters.
Definition: db.h:58
DatabaseConfig(const QString &host, int port, const QString &username, const QString &password, const QString &dbname)
Parameterized constructor for DatabaseConfig.
Definition: db.h:44
QString username
Database username.
Definition: db.h:69
QString host
Database host.
Definition: db.h:68
QString password
Database password.
Definition: db.h:70
QString dbName
Database name.
Definition: db.h:71
int port
Database port.
Definition: db.h:67