8 #ifndef GETDATABASEREQUEST_H
9 #define GETDATABASEREQUEST_H
47 QJsonObject
execute(
const QJsonObject& jsonObj, QMutex& m)
override
49 QMutexLocker locker(&m);
56 response.insert(
"Response", 7);
59 if (jsonObj.contains(
"Data"))
61 QJsonObject dataObj = jsonObj[
"Data"].toObject();
63 if (dataObj.contains(
"email"))
65 admin_email = dataObj.value(
"email").toString();
70 qCritical() <<
"Data not found";
88 QJsonObject obj = result.
first();
90 if (obj.value(
"role").toString() !=
"admin")
92 return CreateErrorResponse(response, data,
"Unauthorized, Cannot get database. User is not an admin");
105 for (
int i = 0; i < result.
size(); ++i)
108 QJsonObject obj = result.
data(i);
110 userObj.insert(
"account_number", QJsonValue::Null);
111 userObj.insert(
"first_name", obj.value(
"first_name").toString());
112 userObj.insert(
"last_name", obj.value(
"last_name").toString());
113 userObj.insert(
"email", obj.value(
"email").toString());
114 userObj.insert(
"role", obj.value(
"role").toString());
115 userObj.insert(
"balance", QJsonValue::Null);
117 userList.append(userObj);
121 result = dbManager->
select(
"A.account_number, A.balance, U.email")
122 ->
table(
"Accounts A")
123 ->
join(
"JOIN Users U ON A.user_id = U.id")
128 for (
int i = 0; i < result.
size(); ++i)
130 QJsonObject obj = result.
data(i);
132 for (
int j = 0; j < userList.size(); ++j)
134 QJsonObject userObj = userList[j].toObject();
135 if (userObj.value(
"email").toString() == obj.value(
"email").toString())
137 userObj.insert(
"account_number", obj.value(
"account_number").toInt());
138 userObj.insert(
"balance", obj.value(
"balance").toDouble());
139 userList[j] = userObj;
146 data.insert(
"status",
int(
true));
147 data.insert(
"message",
"Database fetched successfully");
148 data.insert(
"users", userList);
150 response.insert(
"Data", data);
154 QJsonDocument responseDoc(response);
155 QByteArray responseData = responseDoc.toJson();
158 qDebug().noquote() <<
"<-- GetDatabase::Response :\n" << responseDoc.toJson(QJsonDocument::Indented);
This file contains the declaration of the Request class, which is an abstract base class for handling...
Manages database connections and SQL operations.
Definition: db.h:80
DatabaseManager * table(const QString &value)
Sets the table for the query.
Definition: db.cpp:115
DatabaseManager * where(const QString &value, const QVariant &val=QVariant())
Adds a WHERE clause to the query.
Definition: db.cpp:121
DbResult exec()
Executes the built query.
Definition: db.cpp:266
DatabaseManager * select(const QString &value)
Selects columns for the query.
Definition: db.cpp:107
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
QJsonObject first() const
Retrieves the first item in the result set.
Definition: dbresult.cpp:25
int size() const
Gets the number of items in the result set.
Definition: dbresult.cpp:30
QJsonObject data(int pos) const
Retrieves data at a specific position in the result set.
Definition: dbresult.cpp:35
bool isEmpty() const
Checks if the result set is empty.
Definition: dbresult.cpp:20
The GetDatabaseRequest class handles the retrieval of the entire database.
Definition: GetDatabaseRequest.h:21
GetDatabaseRequest()
Constructor for the GetDatabaseRequest class.
Definition: GetDatabaseRequest.h:31
QJsonObject execute(const QJsonObject &jsonObj, QMutex &m) override
Executes the request to get the entire database.
Definition: GetDatabaseRequest.h:47
The Request class is an abstract base class for handling different types of requests.
Definition: Request.h:25
QJsonObject CreateErrorResponse(QJsonObject &response, QJsonObject &dataObj, QString message)
Creates a generic error JSON response.
Definition: Request.h:90
QJsonObject CreateDBConnectionError(QJsonObject &response, QJsonObject &dataObj)
Creates a JSON response indicating a database connection error.
Definition: Request.h:65
bool isDBConnectionValid(DB::DatabaseManager *dbManager)
Checks if the database connection is valid.
Definition: Request.h:36
Database management classes for handling database connections and operations.