From ead64291dfd489a5c6a06b0f732c1dc2b0b686ff Mon Sep 17 00:00:00 2001 From: Mathis Date: Thu, 25 Apr 2024 12:27:25 +0200 Subject: [PATCH] feat(services): add getBySlug method to MysqlService and refine getAll method Added a new method getBySlug to retrieve a category by its slug in mysql.service.ts. Also, updated the getAll method by specifying the return type to Promise> for better type checking. Issue: #6 Signed-off-by: Mathis --- src/services/mysql.service.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/services/mysql.service.ts b/src/services/mysql.service.ts index 6f8745e..7a80ee4 100644 --- a/src/services/mysql.service.ts +++ b/src/services/mysql.service.ts @@ -411,7 +411,7 @@ const MySqlService = { * - The category objects are of type IDbCategory. * - If an error occurs, the promise will be rejected with an Error object. */ - getAll(handler: MysqlHandler) { + getAll(handler: MysqlHandler): Promise> { return new Promise((resolve, reject) => { const _sql = "SELECT * FROM `categories`"; try { @@ -420,6 +420,26 @@ const MySqlService = { reject(err as Error); } }); + }, + /** + * Retrieves a category from the database by its slug. + * + * @param {MysqlHandler} handler - The MySQL handler object to execute the query. + * @param {string} slug - The slug of the category to retrieve. + * @returns {Promise} - A promise that resolves with the retrieved category object. + * @throws {Error} - If an error occurs while executing the query. + */ + getBySlug(handler: MysqlHandler, slug: string): Promise { + return new Promise((resolve, reject) => { + if (!slug) return reject('slug is undefined') + const _sql = "SELECT * FROM `categories` WHERE `slug_name` = ?"; + const _values = [slug]; + try { + resolve(handler.execute(_sql, _values) as unknown as IDbCategory); + } catch (err: unknown) { + reject(err as Error); + } + }) } } }