From 8fe0fa57d860a749469f5716bbf435a952687bab Mon Sep 17 00:00:00 2001 From: Mathis Date: Mon, 29 Apr 2024 11:31:50 +0200 Subject: [PATCH] feat(services): add Vehicle methods to mysql service This commit introduces several new Vehicle methods to the mysql service (insert, update, getBySlug, getAll, getAvailable, getDue). These methods are scaffolded but not fully implemented, with `insert` being the most complete at this stage. Issue: #20 Signed-off-by: Mathis --- src/services/mysql.service.ts | 59 +++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/services/mysql.service.ts b/src/services/mysql.service.ts index e976c9d..44d47b0 100644 --- a/src/services/mysql.service.ts +++ b/src/services/mysql.service.ts @@ -6,6 +6,7 @@ import type {IDbStatusResult} from "@interfaces/database/IDbStatusResult"; import mysql, {type Connection, type ConnectionOptions} from 'mysql2'; import {Logger} from "tslog"; import process from "node:process"; +import {IDbVehicle} from "@interfaces/database/IDbVehicle"; const access: ConnectionOptions = { @@ -580,6 +581,64 @@ const MySqlService = { }) } }, + Vehicle: { + insert(handler: MysqlHandler, data: IDbVehicle) { + return new Promise((resolve, reject) => { + if (!data.id) return reject('Id is undefined'); + if (data.id.length !== 36) return reject('Id invalid'); + + const _sql = "INSERT INTO `vehicles`(`model_id`, `plate_number`, `odometer`, `health_state`, `id`) VALUES (?, ?, ?, ?, ?)" + const _values = [ + data.model_id, + data.plate_number, + data.odometer, + data.health_state, + data.id + ] + try { + resolve(handler.execute(_sql, _values) as unknown as IDbStatusResult) + } catch (err: unknown) { + reject(err as Error); + } + }) + }, + + //TODO update by id + update(handler: MysqlHandler, data: IDbVehicle) { + return new Promise((resolve, reject) => { + + }) + }, + + //TODO get by slug + getBySlug(handler: MysqlHandler, data: IDbVehicle) { + return new Promise((resolve, reject) => { + + }) + }, + + //TODO get all + getAll(handler: MysqlHandler, data: IDbVehicle) { + return new Promise((resolve, reject) => { + + }) + }, + + //TODO get available + getAvailable(handler: MysqlHandler, data: IDbVehicle) { + return new Promise((resolve, reject) => { + + }) + }, + + //TODO get out of due date + getDue(handler: MysqlHandler, data: IDbVehicle) { + return new Promise((resolve, reject) => { + + }) + } + + }, Category: { /** * Inserts a category into the database.