Initial commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
#include "roles_repository.h"
|
||||
|
||||
#include "create_role_request.h"
|
||||
#include "repository_result.h"
|
||||
#include "role_dto.h"
|
||||
#include "update_role_request.h"
|
||||
#include <QSqlError>
|
||||
#include <QSqlQuery>
|
||||
|
||||
RolesRepository::RolesRepository(QSqlDatabase &database, QObject *parent)
|
||||
: BaseSqlTableRepository(database, parent) {}
|
||||
|
||||
RepositoryResult RolesRepository::createRole(const CreateRoleRequest &request) {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("INSERT INTO roles (role_name, access_level) VALUES "
|
||||
"(:role_name, :access_level)");
|
||||
query.bindValue(":role_name", request.roleName());
|
||||
query.bindValue(":access_level", request.accessLevel());
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
emit dataCreated();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult RolesRepository::getRoleById(qint32 id, RoleDTO &role) const {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("SELECT role_id, role_name, access_level FROM roles WHERE "
|
||||
"role_id = :role_id");
|
||||
query.bindValue(":role_id", id);
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
if (!query.next()) {
|
||||
return RepositoryResult::failureResult("Role not found");
|
||||
}
|
||||
|
||||
role = mapQueryToDTO(query);
|
||||
|
||||
emit dataRetrieved();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult RolesRepository::getAllRoles(QVector<RoleDTO> &roles) const {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("SELECT role_id, role_name, access_level FROM roles");
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
while (query.next()) {
|
||||
roles.append(mapQueryToDTO(query));
|
||||
}
|
||||
|
||||
emit dataRetrieved();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult RolesRepository::updateRole(const UpdateRoleRequest &request) {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare(
|
||||
"UPDATE roles SET role_name = :role_name WHERE role_id = :role_id");
|
||||
query.bindValue(":role_name", request.roleName());
|
||||
query.bindValue(":role_id", request.roleId());
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
emit dataUpdated();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult RolesRepository::deleteRoleById(qint32 roleId) {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("DELETE FROM roles WHERE role_id = :role_id");
|
||||
query.bindValue(":role_id", roleId);
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
emit dataDeleted();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RoleDTO RolesRepository::mapQueryToDTO(const QSqlQuery &query) const {
|
||||
RoleDTO roleDTO;
|
||||
roleDTO.setAccessLevel(query.value("access_level").toInt());
|
||||
roleDTO.setRoleId(query.value("role_id").toInt());
|
||||
roleDTO.setRoleName(query.value("role_name").toString());
|
||||
|
||||
return roleDTO;
|
||||
}
|
||||
Reference in New Issue
Block a user