diff --git a/db/brand.db.js b/db/brand.db.js new file mode 100644 index 0000000..4a80cf0 --- /dev/null +++ b/db/brand.db.js @@ -0,0 +1,76 @@ +const pool = require("../config"); + +// Get all brands +const getAllBrandsDb = async () => { + const queryText = ` + SELECT * + FROM m_brands + WHERE deleted_at IS NULL + ORDER BY brand_id ASC + `; + const result = await pool.query(queryText); + return result.recordset; +}; + +// Get brand by ID +const getBrandByIdDb = async (id) => { + const queryText = ` + SELECT * + FROM m_brands + WHERE brand_id = $1 + AND deleted_at IS NULL + `; + const result = await pool.query(queryText, [id]); + return result.recordset[0]; +}; + +// Get brand by name +const getBrandByNameDb = async (name) => { + const queryText = ` + SELECT * + FROM m_brands + WHERE brand_name = $1 + AND deleted_at IS NULL + `; + const result = await pool.query(queryText, [name]); + return result.recordset[0]; +}; + +// Create brand +const createBrandDb = async (data) => { + const { query: queryText, values } = pool.buildDynamicInsert("m_brands", data); + const result = await pool.query(queryText, values); + const insertedId = result.recordset[0]?.inserted_id; + if (!insertedId) return null; + + return getBrandByIdDb(insertedId); +}; + +// Update brand +const updateBrandDb = async (id, data) => { + const { query: queryText, values } = pool.buildDynamicUpdate("m_brands", data, { brand_id: id }); + await pool.query(queryText, values); + return getBrandByIdDb(id); +}; + +// Soft delete brand +const softDeleteBrandDb = async (id, deletedBy) => { + const queryText = ` + UPDATE m_brands + SET deleted_at = GETDATE(), + deleted_by = $1 + WHERE brand_id = $2 + AND deleted_at IS NULL + `; + await pool.query(queryText, [deletedBy, id]); + return true; +}; + +module.exports = { + getAllBrandsDb, + getBrandByIdDb, + getBrandByNameDb, + createBrandDb, + updateBrandDb, + softDeleteBrandDb, +};