import type { IDbVehicle } from "@interfaces/database/IDbVehicle"; //import { ErrorType, type ISError } from "@interfaces/services/ISError"; import MySqlService from "@services/mysql.service"; import { isDebugMode } from "@utils/debugState"; import { Logger } from "tslog"; import { v4 } from "uuid"; const logger = new Logger({ name: "VehicleService", }); const DbHandler = new MySqlService.Handler("VehicleService"); async function createVehicleService(data: IDbVehicle) { if (isDebugMode()) logger.debug(`\n\n> Creating a new vehicle...\n`); try { const result = await MySqlService.Vehicle.insert(DbHandler, { id: v4(), plate_number: data.plate_number, model_id: data.model_id, odometer: data.odometer | 0, health_state: data.health_state, }); if (result.affectedRows !== 0) { logger.info("\n\n> Success !"); return true; } return false; } catch (error) { logger.error(`\n\n> Error creating category: \n${error}\n`); return false; } } async function updateVehicleService(data: IDbVehicle) { if (isDebugMode()) logger.debug(`\n\n> Updating vehicle...\n`); try { if (!data.id) { return false; } const result = await MySqlService.Vehicle.update(DbHandler, { id: data.id, plate_number: data.plate_number, model_id: data.model_id, odometer: data.odometer | 0, health_state: data.health_state, }); if (result.affectedRows !== 0) { logger.info("\n\n> Success !"); return true; } return false; } catch (error) { logger.error(`\n\n> Error updating vehicle: \n${error}\n`); return false; } } async function getAllVehiclesService() { try { const result = await MySqlService.Vehicle.getAll(DbHandler); return { iat: Date.now(), vehicles: result, total: result.length, }; } catch (error) { logger.error(`\n\n> Error getting vehicles: \n${error}\n`); return false; } } async function getVehicleByIdService(vehicleId: string) { try { const result = await MySqlService.Vehicle.getById(DbHandler, vehicleId); return { iat: Date.now(), vehicle: result, }; } catch (error) { logger.error(`\n\n> Error getting vehicle by id: \n${error}\n`); return false; } } async function getAvailableVehicleService() { try { const result = await MySqlService.Vehicle.getAvailable(DbHandler); return { iat: Date.now(), vehicles: result, total: result.length, }; } catch (error) { logger.error(`\n\n> Error getting available vehicles: \n${error}\n`); return false; } } async function deleteVehicleService(vehicleId: string) { try { const result = await MySqlService.Vehicle.delete(DbHandler, vehicleId); if (result.affectedRows !== 0) { logger.info("\n\n> Success !"); return true; } return false; } catch (error) { logger.error(`\n\n> Error deleting vehicle: \n${error}\n`); return false; } } if (isDebugMode()) logger.debug("\nService loaded."); const VehicleService = { create: createVehicleService, update: updateVehicleService, getAll: getAllVehiclesService, getById: getVehicleByIdService, delete: deleteVehicleService, getAvailable: getAvailableVehicleService, }; export default VehicleService;