import db from '../db.js'; import errorHandler from '../utils/pgerrorhandler.js'; import customError from '../response/customError.js'; import responseCodes from '../response/responseCodes.js'; class ProductService { async create(groupid, localid, abstract_product_id, amount, date_of_production, expiry_date) { await db.query("INSERT INTO products (group_id, local_id, abstract_product_id, amount, date_of_production, expiry_date) VALUES ($1, $2, $3, $4, to_timestamp($5)::date, to_timestamp($6)::date)", [groupid, localid, abstract_product_id, amount, date_of_production, expiry_date]) .catch((e) => { errorHandler(e, "product") }); } async updateAbstractProductId(groupId, localId, abstract_product_id) { await db.query("UPDATE products SET abstract_product_id = $1 WHERE group_id = $2 AND local_id = $3", [abstract_product_id, groupId, localId]) .catch((e) => { errorHandler(e, "abstractproductid") }); } async updateAmount(groupId, localId, amount) { await db.query("UPDATE products SET amount = $1 WHERE group_id = $2 AND local_id = $3", [amount, groupId, localId]) .catch((e) => { errorHandler(e, "amount") }); } async updateDateOfProduction(groupId, localId, date_of_production) { await db.query("UPDATE products SET date_of_production = to_timestamp($1)::date WHERE group_id = $2 AND local_id = $3", [date_of_production, groupId, localId]) .catch((e) => { errorHandler(e, "dateofproduction") }); } async updateExpiryDate(groupId, localId, expiry_date) { await db.query("UPDATE products SET expiry_date = to_timestamp($1)::date WHERE group_id = $2 AND local_id = $3", [expiry_date, groupId, localId]) .catch((e) => { errorHandler(e, "expirydate") }); } async getAll(groupId) { let result = (await db.query("SELECT local_id, abstract_product_id, amount, date_of_production, expiry_date FROM products WHERE group_id = $1", [groupId])).rows; // if (!result) throw new customError(`getAll product not found`, responseCodes.responses.products.not_found); return result; } async exists(groupId, localId) { let result = (await db.query("SELECT * FROM products WHERE group_id = $1 AND local_id = $2", [groupId, localId])).rowCount; if (!result) return false; return true; } async getByLocalId(groupId, localId) { let result = (await db.query("SELECT * FROM products WHERE group_id = $1 AND local_id = $2", [groupId, localId])); if (result.rowCount == 0) throw new customError(`getByLocalId product not found`, responseCodes.responses.products.not_found); return result.rows[0]; } async getByAbstractProductID(groupId, abstractProductID) { let result = (await db.query("SELECT * FROM products WHERE group_id = $1 AND abstract_product_id = $2", [groupId, abstractProductID])) return result.rows } async delete(ID) { await db.query("DELETE FROM products WHERE id = $1", [ID]) } }; export default new ProductService();