refactor(services): refactor method arguments and promises handling in mysql.service.ts
- Compact multiple lines codes into single lines for readability and simplicity. - Replace some Promise responses from unknown to specific IDbStatusResult for a more predictable result. - In `insert`, `update`, `getById` and `delete` methods for `brands`, `categories`, `models`, `vehicles` and `users`, modify the way promises are handled and return values. - This makes the code more readable and easier to understand. Issue: #17 Signed-off-by: Mathis <yidhra@tuta.io>
This commit is contained in:
parent
19d265a0e6
commit
355cb0ec90
@ -5,10 +5,7 @@ import type { IDbModel } from "@interfaces/database/IDbModel";
|
||||
import type { IDbStatusResult } from "@interfaces/database/IDbStatusResult";
|
||||
import type { IDbUser } from "@interfaces/database/IDbUser";
|
||||
import type { IDbVehicle } from "@interfaces/database/IDbVehicle";
|
||||
import mysql, {
|
||||
type Connection,
|
||||
type ConnectionOptions,
|
||||
} from "mysql2";
|
||||
import mysql, { type Connection, type ConnectionOptions } from "mysql2";
|
||||
import { Logger } from "tslog";
|
||||
|
||||
const access: ConnectionOptions = {
|
||||
@ -35,9 +32,7 @@ class MysqlHandler {
|
||||
this.Logger.error(`Error connecting to MySQL: ${err}`);
|
||||
process.exit(1);
|
||||
}
|
||||
this.Logger.info(
|
||||
`Connected to MySQL database (${access.database})`,
|
||||
);
|
||||
this.Logger.info(`Connected to MySQL database (${access.database})`);
|
||||
});
|
||||
}
|
||||
closeConnection() {
|
||||
@ -65,10 +60,7 @@ class MysqlHandler {
|
||||
this.Connection.execute(
|
||||
queryString,
|
||||
values,
|
||||
(
|
||||
err: mysql.QueryError | null,
|
||||
results: mysql.QueryResult,
|
||||
) => {
|
||||
(err: mysql.QueryError | null, results: mysql.QueryResult) => {
|
||||
if (err) {
|
||||
this.Logger.error(`Error executing query: ${err}`);
|
||||
reject(err);
|
||||
@ -114,10 +106,7 @@ const MySqlService = {
|
||||
* @throws {Error} If an error occurs during the execution.
|
||||
* @throws {string} If the `id` field is undefined or invalid.
|
||||
*/
|
||||
insert(
|
||||
handler: MysqlHandler,
|
||||
data: IDbUser,
|
||||
): Promise<IDbStatusResult> {
|
||||
insert(handler: MysqlHandler, data: IDbUser): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!data.id) return reject("Id is undefined");
|
||||
if (data.id.length !== 36) return reject("Id invalid");
|
||||
@ -138,9 +127,7 @@ const MySqlService = {
|
||||
];
|
||||
try {
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(
|
||||
result as unknown as IDbStatusResult,
|
||||
);
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
@ -148,10 +135,7 @@ const MySqlService = {
|
||||
});
|
||||
},
|
||||
|
||||
update(
|
||||
handler: MysqlHandler,
|
||||
data: IDbUser,
|
||||
): Promise<IDbStatusResult> {
|
||||
update(handler: MysqlHandler, data: IDbUser): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!data.id) return reject("Id is undefined");
|
||||
if (data.id.length !== 36) return reject("Id invalid");
|
||||
@ -163,11 +147,7 @@ const MySqlService = {
|
||||
${data.lastname ? "`lastname` = ?," : null}
|
||||
${data.dob ? "`dob` = ?," : null}
|
||||
${data.email ? "`email` = ?," : null}
|
||||
${
|
||||
data.is_mail_verified
|
||||
? "`is_mail_verified` = ?,"
|
||||
: null
|
||||
}
|
||||
${data.is_mail_verified ? "`is_mail_verified` = ?," : null}
|
||||
${data.is_admin ? "`is_admin` = ?," : null}
|
||||
${data.gdpr ? "`gdpr` = ?," : null}
|
||||
${data.hash ? "`hash` = ?" : null}`;
|
||||
@ -186,9 +166,7 @@ const MySqlService = {
|
||||
|
||||
const _sql = `UPDATE "users" SET ${_template} WHERE 'id' = ?`;
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(
|
||||
result as unknown as IDbStatusResult,
|
||||
);
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
@ -196,10 +174,7 @@ const MySqlService = {
|
||||
});
|
||||
},
|
||||
|
||||
getById(
|
||||
handler: MysqlHandler,
|
||||
userId: string,
|
||||
): Promise<IDbUser> {
|
||||
getById(handler: MysqlHandler, userId: string): Promise<IDbUser> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (userId.length !== 36) return reject("Id invalid");
|
||||
const _sql = "SELECT * FROM `users` WHERE `id` = ?";
|
||||
@ -242,10 +217,7 @@ const MySqlService = {
|
||||
* @return {Promise<IDbUser>} - A promise that resolves to the retrieved user object.
|
||||
* @throws {Error} - If an error occurs while retrieving the user.
|
||||
*/
|
||||
getByEmail(
|
||||
handler: MysqlHandler,
|
||||
email: string,
|
||||
): Promise<IDbUser> {
|
||||
getByEmail(handler: MysqlHandler, email: string): Promise<IDbUser> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!email) return reject("email is undefined");
|
||||
const _sql = "SELECT * FROM `users` WHERE `email` = ?";
|
||||
@ -273,8 +245,7 @@ const MySqlService = {
|
||||
userId: string,
|
||||
): Promise<boolean> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const _sql =
|
||||
"SELECT `is_admin` FROM `users` WHERE `id` = ?";
|
||||
const _sql = "SELECT `is_admin` FROM `users` WHERE `id` = ?";
|
||||
const _values = [userId];
|
||||
try {
|
||||
const isAdmin = handler.execute(
|
||||
@ -297,17 +268,16 @@ const MySqlService = {
|
||||
* @param {string} userId - The ID of the user to delete.
|
||||
* @return {Promise<unknown>} - A Promise that resolves when the deletion is successful, or rejects with an error.
|
||||
*/
|
||||
delete(
|
||||
handler: MysqlHandler,
|
||||
userId: string,
|
||||
): Promise<unknown> {
|
||||
delete(handler: MysqlHandler, userId: string): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!userId) return reject("Id is undefined");
|
||||
if (userId.length !== 36) return reject("Id invalid");
|
||||
const _sql = "DELETE FROM `users` WHERE `id` = ?";
|
||||
const _values = [userId];
|
||||
try {
|
||||
resolve(handler.execute(_sql, _values));
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -323,10 +293,7 @@ const MySqlService = {
|
||||
* @returns {Promise<IDbStatusResult>} - A Promise that resolves to the status result of the insert operation.
|
||||
* @throws {Error} - If an error occurs during the execution of the SQL query.
|
||||
*/
|
||||
insert(
|
||||
handler: MysqlHandler,
|
||||
data: IDbBrand,
|
||||
): Promise<IDbStatusResult> {
|
||||
insert(handler: MysqlHandler, data: IDbBrand): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!data.id) return reject("Id is undefined");
|
||||
if (data.id.length !== 36) return reject("Id invalid");
|
||||
@ -340,12 +307,7 @@ const MySqlService = {
|
||||
data.image_blob,
|
||||
];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbStatusResult,
|
||||
);
|
||||
resolve(handler.execute(_sql, _values) as unknown as IDbStatusResult);
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -360,10 +322,7 @@ const MySqlService = {
|
||||
* @returns {Promise<IDbStatusResult>} - A promise that resolves to the status result of the update operation.
|
||||
* @throws {Error} - If any error occurs during the process.
|
||||
*/
|
||||
update(
|
||||
handler: MysqlHandler,
|
||||
data: IDbBrand,
|
||||
): Promise<IDbStatusResult> {
|
||||
update(handler: MysqlHandler, data: IDbBrand): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!data.id) return reject("Id is undefined");
|
||||
if (data.id.length !== 36) return reject("Id invalid");
|
||||
@ -381,12 +340,9 @@ const MySqlService = {
|
||||
data.id,
|
||||
];
|
||||
const _sql = `UPDATE "brands" SET ${_template} WHERE 'id' = ?`;
|
||||
return resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbStatusResult,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -404,9 +360,9 @@ const MySqlService = {
|
||||
return new Promise((resolve, reject) => {
|
||||
const _sql = "SELECT * FROM `brands`";
|
||||
try {
|
||||
resolve(
|
||||
handler.query(_sql) as unknown as Array<IDbBrand>,
|
||||
);
|
||||
handler.query(_sql).then((result) => {
|
||||
return resolve(result as unknown as Array<IDbBrand>);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -422,22 +378,16 @@ const MySqlService = {
|
||||
* @throws {Error} - If an error occurs during execution
|
||||
* @throws {string} - If brandId is undefined or invalid
|
||||
*/
|
||||
getById(
|
||||
handler: MysqlHandler,
|
||||
brandId: string,
|
||||
): Promise<IDbBrand> {
|
||||
getById(handler: MysqlHandler, brandId: string): Promise<IDbBrand> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!brandId) return reject("Id is undefined");
|
||||
if (brandId.length !== 36) return reject("Id invalid");
|
||||
const _sql = "SELECT * FROM `brands` WHERE `id` = ?";
|
||||
const _values = [brandId];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbBrand,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbBrand);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
//TODO Reject with null and logger error
|
||||
reject(err as Error);
|
||||
@ -452,22 +402,15 @@ const MySqlService = {
|
||||
* @param {string} brandSlug - The slug of the brand to retrieve.
|
||||
* @returns {Promise<IDbBrand>} - A promise that resolves with the brand object if found, or rejects with an error message.
|
||||
*/
|
||||
getBySlug(
|
||||
handler: MysqlHandler,
|
||||
brandSlug: string,
|
||||
): Promise<IDbBrand> {
|
||||
getBySlug(handler: MysqlHandler, brandSlug: string): Promise<IDbBrand> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!brandSlug) return reject("slug is undefined");
|
||||
const _sql =
|
||||
"SELECT * FROM `brands` WHERE `slug_name` = ?";
|
||||
const _sql = "SELECT * FROM `brands` WHERE `slug_name` = ?";
|
||||
const _values = [brandSlug];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbBrand,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbBrand);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -482,10 +425,7 @@ const MySqlService = {
|
||||
* @returns {Promise<IDbStatusResult>} A promise that resolves to the database status result.
|
||||
* @throws {Error} If an error occurs while deleting the brand.
|
||||
*/
|
||||
delete(
|
||||
handler: MysqlHandler,
|
||||
brandId: string,
|
||||
): Promise<IDbStatusResult> {
|
||||
delete(handler: MysqlHandler, brandId: string): Promise<IDbStatusResult> {
|
||||
//TODO check if has models linked before actions
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!brandId) return reject("Id is undefined");
|
||||
@ -493,12 +433,9 @@ const MySqlService = {
|
||||
const _sql = "DELETE FROM `brands` WHERE `id` = ?";
|
||||
const _values = [brandId];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbStatusResult,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -519,9 +456,9 @@ const MySqlService = {
|
||||
return new Promise((resolve, reject) => {
|
||||
const _sql = "SELECT * FROM `models`";
|
||||
try {
|
||||
resolve(
|
||||
handler.query(_sql) as unknown as Array<IDbModel>,
|
||||
);
|
||||
handler.query(_sql).then((result) => {
|
||||
return resolve(result as unknown as Array<IDbModel>);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -536,21 +473,14 @@ const MySqlService = {
|
||||
* @return {Promise<IDbModel>} A promise that resolves with the retrieved model.
|
||||
* @throws {Error} If there was an error executing the query.
|
||||
*/
|
||||
getBySlug(
|
||||
handler: MysqlHandler,
|
||||
modelSlug: string,
|
||||
): Promise<IDbModel> {
|
||||
getBySlug(handler: MysqlHandler, modelSlug: string): Promise<IDbModel> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const _sql =
|
||||
"SELECT * FROM `models` WHERE `slug_name` = ?";
|
||||
const _sql = "SELECT * FROM `models` WHERE `slug_name` = ?";
|
||||
const _values = [modelSlug];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbModel,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbModel);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -564,20 +494,12 @@ const MySqlService = {
|
||||
* @param {string} modelId - The ID of the model to retrieve.
|
||||
* @return {Promise<IDbModel>} - A promise that resolves with the retrieved model, or rejects with an error.
|
||||
*/
|
||||
getById(
|
||||
handler: MysqlHandler,
|
||||
modelId: string,
|
||||
): Promise<IDbModel> {
|
||||
getById(handler: MysqlHandler, modelId: string): Promise<IDbModel> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const _sql = "SELECT * FROM `models` WHERE `id` = ?";
|
||||
const _values = [modelId];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbModel,
|
||||
);
|
||||
resolve(handler.execute(_sql, _values) as unknown as IDbModel);
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -592,10 +514,7 @@ const MySqlService = {
|
||||
* @throws {string} - Throws an error message if the id is undefined or invalid.
|
||||
* @returns {Promise<IDbStatusResult>} - A promise that resolves to the status result of the insert operation.
|
||||
*/
|
||||
insert(
|
||||
handler: MysqlHandler,
|
||||
data: IDbModel,
|
||||
): Promise<IDbStatusResult> {
|
||||
insert(handler: MysqlHandler, data: IDbModel): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!data.id) return reject("Id is undefined");
|
||||
if (data.id.length !== 36) return reject("Id invalid");
|
||||
@ -613,12 +532,9 @@ const MySqlService = {
|
||||
data.id,
|
||||
];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbStatusResult,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -635,10 +551,7 @@ const MySqlService = {
|
||||
* @return {Promise<IDbStatusResult>} - A promise that resolves to the status result of the update operation.
|
||||
* @throws {Error} - If an error occurs during the update process.
|
||||
*/
|
||||
update(
|
||||
handler: MysqlHandler,
|
||||
data: IDbModel,
|
||||
): Promise<IDbStatusResult> {
|
||||
update(handler: MysqlHandler, data: IDbModel): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!data.id) return reject("Id is undefined");
|
||||
if (data.id.length !== 36) return reject("Id invalid");
|
||||
@ -664,12 +577,9 @@ const MySqlService = {
|
||||
data.id,
|
||||
];
|
||||
const _sql = `UPDATE "models" SET ${_template} WHERE 'id' = ?`;
|
||||
return resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbStatusResult,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -684,10 +594,7 @@ const MySqlService = {
|
||||
* @returns {Promise<IDbStatusResult>} A promise that resolves to the result of the delete operation.
|
||||
* @throws {Error} If an error occurs during the delete operation.
|
||||
*/
|
||||
delete(
|
||||
handler: MysqlHandler,
|
||||
modelId: string,
|
||||
): Promise<IDbStatusResult> {
|
||||
delete(handler: MysqlHandler, modelId: string): Promise<IDbStatusResult> {
|
||||
//TODO check if has models linked before actions
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!modelId) return reject("Id is undefined");
|
||||
@ -695,12 +602,9 @@ const MySqlService = {
|
||||
const _sql = "DELETE FROM `models` WHERE `id` = ?";
|
||||
const _values = [modelId];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbStatusResult,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -715,10 +619,7 @@ const MySqlService = {
|
||||
* @throws Throws an error if the provided `data` object does not contain the `id` property or if the `id` is not a valid UUID.
|
||||
* @returns {Promise<IDbStatusResult>} A promise that resolves to the result of the insert operation.
|
||||
*/
|
||||
insert(
|
||||
handler: MysqlHandler,
|
||||
data: IDbVehicle,
|
||||
): Promise<IDbStatusResult> {
|
||||
insert(handler: MysqlHandler, data: IDbVehicle): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!data.id) return reject("Id is undefined");
|
||||
if (data.id.length !== 36) return reject("Id invalid");
|
||||
@ -733,12 +634,9 @@ const MySqlService = {
|
||||
data.id,
|
||||
];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbStatusResult,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -753,10 +651,7 @@ const MySqlService = {
|
||||
* @throws {string} Throws an error if the id is undefined or invalid.
|
||||
* @returns {Promise<IDbStatusResult>} Returns a Promise that resolves to the status result of the update operation.
|
||||
*/
|
||||
update(
|
||||
handler: MysqlHandler,
|
||||
data: IDbVehicle,
|
||||
): Promise<IDbStatusResult> {
|
||||
update(handler: MysqlHandler, data: IDbVehicle): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!data.id) return reject("Id is undefined");
|
||||
if (data.id.length !== 36) return reject("Id invalid");
|
||||
@ -766,9 +661,7 @@ const MySqlService = {
|
||||
${data.model_id ? "`model_id` = ?," : null}
|
||||
${data.plate_number ? "`plate_number` = ?," : null}
|
||||
${data.odometer ? "`odometer` = ?," : null}
|
||||
${
|
||||
data.health_state ? "`health_state` = ?," : null
|
||||
}`;
|
||||
${data.health_state ? "`health_state` = ?," : null}`;
|
||||
|
||||
const _values = [
|
||||
data.model_id,
|
||||
@ -778,12 +671,9 @@ const MySqlService = {
|
||||
data.id,
|
||||
];
|
||||
const _sql = `UPDATE "vehicles" SET ${_template} WHERE 'id' = ?`;
|
||||
return resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbStatusResult,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -798,23 +688,16 @@ const MySqlService = {
|
||||
* @returns {Promise<IDbVehicle>} - A promise that resolves to the retrieved vehicle.
|
||||
* @throws {Error} - If an error occurs while retrieving the vehicle.
|
||||
*/
|
||||
getById(
|
||||
handler: MysqlHandler,
|
||||
vehicleId: string,
|
||||
): Promise<IDbVehicle> {
|
||||
getById(handler: MysqlHandler, vehicleId: string): Promise<IDbVehicle> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!vehicleId) return reject("Id is undefined");
|
||||
if (vehicleId.length !== 36)
|
||||
return reject("Id invalid");
|
||||
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,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbVehicle);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -832,9 +715,9 @@ const MySqlService = {
|
||||
return new Promise((resolve, reject) => {
|
||||
const _sql = "SELECT * FROM `models`";
|
||||
try {
|
||||
resolve(
|
||||
handler.query(_sql) as unknown as Array<IDbVehicle>,
|
||||
);
|
||||
handler.query(_sql).then((result) => {
|
||||
return resolve(result as unknown as Array<IDbVehicle>);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -848,16 +731,13 @@ const MySqlService = {
|
||||
* @returns {Promise<Array<IDbVehicle>>} A promise that resolves to an array of available vehicles.
|
||||
* @throws {Error} If an error occurs while executing the query.
|
||||
*/
|
||||
getAvailable(
|
||||
handler: MysqlHandler,
|
||||
): Promise<Array<IDbVehicle>> {
|
||||
getAvailable(handler: MysqlHandler): Promise<Array<IDbVehicle>> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const _sql =
|
||||
"SELECT * FROM `vehicles` WERE `isAvailable` = 1";
|
||||
const _sql = "SELECT * FROM `vehicles` WERE `isAvailable` = 1";
|
||||
try {
|
||||
resolve(
|
||||
handler.query(_sql) as unknown as Array<IDbVehicle>,
|
||||
);
|
||||
handler.query(_sql).then((result) => {
|
||||
return resolve(result as unknown as Array<IDbVehicle>);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -866,29 +746,25 @@ const MySqlService = {
|
||||
},
|
||||
Category: {
|
||||
/**
|
||||
* Inserts a category into the database.
|
||||
* Insert a category into the database.
|
||||
*
|
||||
* @param {MysqlHandler} handler - The MySQL handler object.
|
||||
* @param {IDbCategory} data - The category data to be inserted.
|
||||
* @return {Promise<unknown>} - A promise that resolves if the insertion is successful, and rejects with an error if it fails.
|
||||
* @param {MysqlHandler} handler - The MySQL handler instance.
|
||||
* @param {IDbCategory} data - The category data to insert.
|
||||
* @returns {Promise<IDbStatusResult>} A promise that resolves to the status result of the insertion.
|
||||
* @throws {Error} If an error occurs during the execution of the insertion.
|
||||
*/
|
||||
insert(
|
||||
handler: MysqlHandler,
|
||||
data: IDbCategory,
|
||||
): Promise<unknown> {
|
||||
insert(handler: MysqlHandler, data: IDbCategory): Promise<IDbStatusResult> {
|
||||
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 `categories`(`id`,`slug_name`, `display_name`) VALUES (?, ?, ?)";
|
||||
const _values = [
|
||||
data.id,
|
||||
data.slug_name,
|
||||
data.display_name,
|
||||
];
|
||||
const _values = [data.id, data.slug_name, data.display_name];
|
||||
try {
|
||||
resolve(handler.execute(_sql, _values));
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -898,15 +774,11 @@ const MySqlService = {
|
||||
/**
|
||||
* Updates a category in the database.
|
||||
*
|
||||
* @param {MysqlHandler} handler - The MySQL handler instance.
|
||||
* @param {IDbCategory} data - The category data to update.
|
||||
* @returns {Promise<number>} - A promise that resolves with the number of affected rows in the database.
|
||||
* @throws {Error} - If an error occurs during execution.
|
||||
* @param {MysqlHandler} handler - The MySQL handler for executing database queries.
|
||||
* @param {IDbCategory} data - The category data to be updated.
|
||||
* @returns {Promise<IDbStatusResult>} - A promise that resolves to the status result of the update operation.
|
||||
*/
|
||||
update(
|
||||
handler: MysqlHandler,
|
||||
data: IDbCategory,
|
||||
): Promise<unknown> {
|
||||
update(handler: MysqlHandler, data: IDbCategory): Promise<IDbStatusResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!data.id) return reject("Id is undefined");
|
||||
if (data.id.length !== 36) return reject("Id invalid");
|
||||
@ -914,19 +786,13 @@ const MySqlService = {
|
||||
try {
|
||||
const _template = `
|
||||
${data.slug_name ? "`slug_name` = ?," : null}
|
||||
${
|
||||
data.display_name ? "`display_name` = ?," : null
|
||||
}`;
|
||||
${data.display_name ? "`display_name` = ?," : null}`;
|
||||
|
||||
const _values = [
|
||||
data.slug_name,
|
||||
data.display_name,
|
||||
data.id,
|
||||
];
|
||||
const _values = [data.slug_name, data.display_name, data.id];
|
||||
const _sql = `UPDATE "categories" SET ${_template} WHERE 'id' = ?`;
|
||||
return resolve(
|
||||
handler.execute(_sql, _values) as unknown as number,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -937,19 +803,16 @@ const MySqlService = {
|
||||
*
|
||||
* @param {MysqlHandler} handler - The MySQL handler used for executing the query.
|
||||
*
|
||||
* @return {Promise<Array<IDbCategory>>} - A promise that resolves with an array of category objects from the database.
|
||||
* - The category objects are of type IDbCategory.
|
||||
* - If an error occurs, the promise will be rejected with an Error object.
|
||||
* @return {Promise<Array<IDbCategory>>}
|
||||
* - A promise that resolves with an array of category objects from the database.
|
||||
* - The category objects are of type IDbCategory.
|
||||
* - If an error occurs, the promise will be rejected with an Error object.
|
||||
*/
|
||||
getAll(handler: MysqlHandler): Promise<Array<IDbCategory>> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const _sql = "SELECT * FROM `categories`";
|
||||
try {
|
||||
resolve(
|
||||
handler.query(
|
||||
_sql,
|
||||
) as unknown as Array<IDbCategory>,
|
||||
);
|
||||
resolve(handler.query(_sql) as unknown as Array<IDbCategory>);
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -969,16 +832,12 @@ const MySqlService = {
|
||||
): Promise<IDbCategory> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!categorySlug) return reject("slug is undefined");
|
||||
const _sql =
|
||||
"SELECT * FROM `categories` WHERE `slug_name` = ?";
|
||||
const _sql = "SELECT * FROM `categories` WHERE `slug_name` = ?";
|
||||
const _values = [categorySlug];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbCategory,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbCategory);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
@ -992,38 +851,41 @@ const MySqlService = {
|
||||
* @returns {Promise<IDbCategory>} - A Promise that resolves with the category object.
|
||||
* @throws {Error} - If an error occurs during execution.
|
||||
*/
|
||||
getById(
|
||||
handler: MysqlHandler,
|
||||
categoryId: string,
|
||||
): Promise<IDbCategory> {
|
||||
getById(handler: MysqlHandler, categoryId: string): Promise<IDbCategory> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!categoryId) return reject("slug is undefined");
|
||||
if (categoryId.length !== 36)
|
||||
return reject("Id invalid");
|
||||
const _sql =
|
||||
"SELECT * FROM `categories` WHERE `id` = ?";
|
||||
if (categoryId.length !== 36) return reject("Id invalid");
|
||||
const _sql = "SELECT * FROM `categories` WHERE `id` = ?";
|
||||
const _values = [categoryId];
|
||||
try {
|
||||
resolve(
|
||||
handler.execute(
|
||||
_sql,
|
||||
_values,
|
||||
) as unknown as IDbCategory,
|
||||
);
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbCategory);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Deletes a category from the database based on the given categoryId.
|
||||
*
|
||||
* @param {MysqlHandler} handler - The MysqlHandler object for executing database queries.
|
||||
* @param {string} categoryId - The ID of the category to be deleted.
|
||||
*
|
||||
* @returns {Promise<IDbStatusResult>} - A promise that resolves to the database status result after deletion.
|
||||
* @throws {Error} - If an error occurs while executing the deletion query.
|
||||
*/
|
||||
delete(handler: MysqlHandler, categoryId: string) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!categoryId) return reject("Id is undefined");
|
||||
if (categoryId.length !== 36)
|
||||
return reject("Id invalid");
|
||||
if (categoryId.length !== 36) return reject("Id invalid");
|
||||
const _sql = "DELETE FROM `categories` WHERE `id` = ?";
|
||||
const _values = [categoryId];
|
||||
try {
|
||||
resolve(handler.execute(_sql, _values));
|
||||
handler.execute(_sql, _values).then((result) => {
|
||||
return resolve(result as unknown as IDbStatusResult);
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
reject(err as Error);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user