add: device service

This commit is contained in:
2025-10-01 10:20:09 +07:00
parent e577179358
commit 446e393ee8

View File

@@ -0,0 +1,81 @@
const {
getAllDevicesDb,
getDeviceByIdDb,
getDeviceByCodeDb,
createDeviceDb,
updateDeviceDb,
softDeleteDeviceDb
} = require('../db/device.db');
const { ErrorHandler } = require('../helpers/error');
class DeviceService {
// Get all devices
static async getAllDevices() {
const devices = await getAllDevicesDb();
return devices;
}
// Get device by ID
static async getDeviceById(id) {
const device = await getDeviceByIdDb(id);
if (!device) {
throw new ErrorHandler(404, 'Device not found');
}
return device;
}
// Get device by code
static async getDeviceByCode(code) {
const device = await getDeviceByCodeDb(code);
if (!device) {
throw new ErrorHandler(404, 'Device not found');
}
return device;
}
// Create device
static async createDevice(data, userId) {
if (!data || typeof data !== 'object') data = {};
data.created_by = userId;
data.is_active = 1;
// cek kode unik
const existingDevice = await getDeviceByCodeDb(data.device_code);
if (existingDevice) {
throw new ErrorHandler(400, 'Device code already exists');
}
const newDevice = await createDeviceDb(data);
return newDevice;
}
// Update device
static async updateDevice(id, data, userId) {
if (!data || typeof data !== 'object') data = {};
const existingDevice = await getDeviceByIdDb(id);
if (!existingDevice) {
throw new ErrorHandler(404, 'Device not found');
}
data.updated_by = userId;
data.updated_at = new Date();
await updateDeviceDb(id, data);
return { message: 'Device updated successfully' };
}
// Soft delete device
static async deleteDevice(id, userId) {
const existingDevice = await getDeviceByIdDb(id);
if (!existingDevice) {
throw new ErrorHandler(404, 'Device not found');
}
await softDeleteDeviceDb(id, userId);
return { message: 'Device deleted successfully' };
}
}
module.exports = DeviceService;