add: role db

This commit is contained in:
2025-10-08 11:37:40 +07:00
parent 45968832f0
commit a6c2e7fc7e

View File

@@ -1,59 +1,91 @@
const pool = require("../config"); const pool = require("../config");
// Get all roles // Get all roles
const getAllRolesDb = async () => { const getAllRolesDb = async (filters = {}) => {
const { whereConditions, queryParams } = pool.buildFilterQuery([
{ column: "r.role_name", param: filters.role_name, type: "string" },
{ column: "r.role_level", param: filters.role_level, type: "number" },
]);
const whereClause = whereConditions.length ? `AND ${whereConditions.join(" AND ")}` : "";
const queryText = ` const queryText = `
SELECT * SELECT
FROM m_roles r.role_id,
WHERE deleted_at IS NULL r.role_name,
ORDER BY role_id ASC r.role_description,
r.role_level,
r.created_at,
r.updated_at,
r.updated_by,
r.deleted_at,
r.deleted_by
FROM m_roles r
WHERE r.deleted_at IS NULL ${whereClause}
ORDER BY r.role_id ASC
`; `;
const result = await pool.query(queryText);
const result = await pool.query(queryText, queryParams);
return result.recordset; return result.recordset;
}; };
// Get role by ID // Get role by ID
const getRoleByIdDb = async (roleId) => { const getRoleByIdDb = async (id) => {
const queryText = ` const queryText = `
SELECT * SELECT
role_id,
role_name,
role_description,
role_level,
created_at,
updated_at,
updated_by,
deleted_at,
deleted_by
FROM m_roles FROM m_roles
WHERE role_id = $1 AND deleted_at IS NULL WHERE role_id = $1 AND deleted_at IS NULL
`; `;
const result = await pool.query(queryText, [roleId]); const result = await pool.query(queryText, [id]);
return result.recordset[0]; return result.recordset[0];
}; };
// Create role // Create role
const createRoleDb = async (data) => { const createRoleDb = async (data) => {
const { query: queryText, values } = pool.buildDynamicInsert("m_roles", data); const { query, values } = pool.buildDynamicInsert("m_roles", {
const result = await pool.query(queryText, values); ...data,
created_at: new Date(),
});
const result = await pool.query(query, values);
return result.recordset[0]?.inserted_id || null; return result.recordset[0]?.inserted_id || null;
}; };
// Update role // Update role
const updateRoleDb = async (roleId, data) => { const updateRoleDb = async (id, data) => {
const { query: queryText, values } = pool.buildDynamicUpdate("m_roles", data, { role_id: roleId }); const { query, values } = pool.buildDynamicUpdate(
await pool.query(queryText, values); "m_roles",
{ ...data, updated_at: new Date() },
{ role_id: id }
);
await pool.query(query, values);
return true; return true;
}; };
// Soft delete role // Soft delete role
const deleteRoleDb = async (roleId, deletedBy) => { const deleteRoleDb = async (id, deletedBy) => {
const queryText = ` const queryText = `
UPDATE m_roles UPDATE m_roles
SET deleted_at = GETDATE(), SET deleted_at = GETDATE(),
deleted_by = $1 deleted_by = $1
WHERE role_id = $2 WHERE role_id = $2
`; `;
await pool.query(queryText, [deletedBy, roleId]); await pool.query(queryText, [deletedBy, id]);
return true; return true;
}; };
module.exports = { module.exports = {
getAllRolesDb, getAllRolesDb,
getRoleByIdDb, getRoleByIdDb,
createRoleDb, createRoleDb,
updateRoleDb, updateRoleDb,
deleteRoleDb, deleteRoleDb,
}; };