72 lines
3.2 KiB
JavaScript
72 lines
3.2 KiB
JavaScript
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();
|