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 <yidhra@tuta.io>
This commit is contained in:
Mathis H (Avnyr) 2024-04-29 11:31:50 +02:00
parent 2796b514eb
commit 8fe0fa57d8
Signed by: Mathis
GPG Key ID: DD9E0666A747D126

View File

@ -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.