From 37cfaf4bbdb3b14416a7ec597b76513b72dfc77d Mon Sep 17 00:00:00 2001 From: Mathis Date: Mon, 29 Apr 2024 12:23:13 +0200 Subject: [PATCH] feat(services): implement getById and getAll methods in mysql service Implemented getById and getAll methods in the mysql service. The getById method retrieves a vehicle by its ID, and the getAll method fetches all vehicles from the database. These improvements facilitate more efficient data retrieval and enhance overall service functionality. Issue: #20 Signed-off-by: Mathis --- src/services/mysql.service.ts | 43 ++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/src/services/mysql.service.ts b/src/services/mysql.service.ts index 22ebd3d..a2d8777 100644 --- a/src/services/mysql.service.ts +++ b/src/services/mysql.service.ts @@ -464,6 +464,7 @@ const MySqlService = { } }); }, + /** * Retrieves a model by its ID from the database. * @@ -646,18 +647,44 @@ const MySqlService = { }) }, - //TODO get by slug - getBySlug(handler: MysqlHandler, data: IDbVehicle) { + /** + * Retrieves a vehicle from the database by its ID. + * + * @param {MysqlHandler} handler - The instance of the MySQL handler. + * @param {string} vehicleId - The ID of the vehicle to retrieve. + * @returns {Promise} - A promise that resolves to the retrieved vehicle. + * @throws {Error} - If an error occurs while retrieving the vehicle. + */ + getById(handler: MysqlHandler, vehicleId: string): Promise { return new Promise((resolve, reject) => { - - }) + if (!vehicleId) return reject('Id is undefined'); + if (vehicleId.length !== 36) return reject('Id invalid'); + const _sql = "SELECT * FROM `vehicles` WHERE `id` = ?"; + const _values = [vehicleId]; + try { + resolve(handler.execute(_sql, _values) as unknown as IDbVehicle); + } catch (err: unknown) { + reject(err as Error); + } + }); }, - //TODO get all - getAll(handler: MysqlHandler, data: IDbVehicle) { + /** + * Retrieves all vehicles from the database. + * + * @param {MysqlHandler} handler - The MySQL handler for executing queries. + * @return {Promise>} A promise that resolves with an array of database vehicles. + * @throws {Error} If an error occurs during the database query. + */ + getAll(handler: MysqlHandler): Promise> { return new Promise((resolve, reject) => { - - }) + const _sql = "SELECT * FROM `models`"; + try { + resolve(handler.query(_sql) as unknown as Array); + } catch (err: unknown) { + reject(err as Error); + } + }); }, //TODO get available