wisdom #45

Merged
bragaz_rexita merged 2 commits from wisdom into main 2026-04-27 06:31:21 +00:00
4 changed files with 35 additions and 2 deletions

View File

@@ -14,6 +14,7 @@ const getAllSparepartDb = async (searchParams = {}) => {
const { whereOrConditions, whereParamOr } = pool.buildStringOrIlike(
[
"a.sparepart_name",
"a.sparepart_number",
"a.sparepart_code",
"a.sparepart_model",
"a.updated_at",
@@ -28,6 +29,7 @@ const getAllSparepartDb = async (searchParams = {}) => {
const { whereConditions, whereParamAnd } = pool.buildFilterQuery(
[
{ column: "a.sparepart_name", param: searchParams.code, type: "string" },
{ column: "a.sparepart_number", param: searchParams.code, type: "string" },
{
column: "a.sparepart_code",
param: searchParams.location,
@@ -156,6 +158,7 @@ const getSparepartsByIdsDb = async (sparepartIds) => {
SELECT
sparepart_id,
sparepart_name,
sparepart_number,
sparepart_code,
sparepart_description,
sparepart_model,
@@ -165,6 +168,7 @@ const getSparepartsByIdsDb = async (sparepartIds) => {
sparepart_unit,
sparepart_merk,
sparepart_stok,
sparepart_yearly,
created_at,
updated_at
FROM m_sparepart

View File

@@ -28,6 +28,8 @@ class SparepartService {
throw new ErrorHandler(404, "Sparepart not found");
}
sparepart[0].sparepart_yearly = JSON.parse(sparepart[0].sparepart_yearly);
return sparepart[0];
} catch (error) {
throw new ErrorHandler(error.statusCode || 500, error.message);
@@ -42,6 +44,11 @@ class SparepartService {
if (exists)
throw new ErrorHandler(400, "Sparepart name already exists");
}
if (data.sparepart_yearly) {
data.sparepart_yearly = JSON.stringify(data.sparepart_yearly);
}
const created = await createSparepartDb(data);
if (!created) throw new ErrorHandler(500, "Failed to create Sparepart");
return created;
@@ -65,6 +72,11 @@ class SparepartService {
if (exists)
throw new ErrorHandler(400, "Sparepart name already exists");
}
if (data.sparepart_yearly) {
data.sparepart_yearly = JSON.stringify(data.sparepart_yearly);
}
const updated = await updateSparepartDb(id, data);
if (!updated) throw new ErrorHandler(500, "Failed to update Sparepart");
return await this.getSparepartById(id);

View File

@@ -16,7 +16,9 @@ const insertDeviceSchema = Joi.object({
.messages({
'string.ip': 'IP address must be a valid IPv4 or IPv6 address'
}),
listen_channel: Joi.string().max(100).required()
listen_channel: Joi.string().max(100).required(),
listen_channel_reminder: Joi.string().max(100).optional(),
reminder_at: Joi.date().iso().allow(null).optional()
});
const updateDeviceSchema = Joi.object({
@@ -30,7 +32,10 @@ const updateDeviceSchema = Joi.object({
.messages({
'string.ip': 'IP address must be a valid IPv4 or IPv6 address'
}),
listen_channel: Joi.string().max(100)
listen_channel: Joi.string().max(100),
listen_channel_reminder: Joi.string().max(100).optional(),
reminder_at: Joi.date().iso().allow(null).optional()
}).min(1);

View File

@@ -4,6 +4,7 @@ const Joi = require("joi");
// ========================
const insertSparepartSchema = Joi.object({
sparepart_name: Joi.string().max(255).required(),
sparepart_number: Joi.string().max(255).optional(),
sparepart_description: Joi.string().max(255).optional(),
sparepart_model: Joi.string().max(255).optional(),
sparepart_foto: Joi.string().max(255).optional().allow(""),
@@ -12,11 +13,17 @@ const insertSparepartSchema = Joi.object({
sparepart_unit: Joi.string().max(255).optional(),
sparepart_merk: Joi.string().max(255).optional(),
sparepart_stok: Joi.string().max(255).optional(),
sparepart_yearly: Joi.array()
.items(Joi.number().integer())
.min(0)
.allow(null)
.optional()
});
// Update Validation
const updateSparepartSchema = Joi.object({
sparepart_name: Joi.string().max(255).optional(),
sparepart_number: Joi.string().max(255).optional(),
sparepart_description: Joi.string().max(255).optional(),
sparepart_model: Joi.string().max(255).optional(),
sparepart_foto: Joi.string().max(255).optional().allow(''),
@@ -25,6 +32,11 @@ const updateSparepartSchema = Joi.object({
sparepart_unit: Joi.string().max(255).optional(),
sparepart_merk: Joi.string().max(255).optional(),
sparepart_stok: Joi.string().max(255).optional(),
sparepart_yearly: Joi.array()
.items(Joi.number().integer())
.min(0)
.allow(null)
.optional()
});
module.exports = {
insertSparepartSchema,