feat(services): enhance readability and update factorize function for various elements in mysql.service
- The readability within mysql.service.ts file is improved by formatting multi-line functions. - The factorize function for 'users', 'brands', 'vehicles', and 'categories' has been updated to enhance code quality. - Import statements were restructured for better readability. Signed-off-by: Mathis <yidhra@tuta.io>
This commit is contained in:
parent
cb1c2ee87c
commit
d7f9cb0b37
@ -1,14 +1,17 @@
|
|||||||
import process from "node:process";
|
import process from "node:process";
|
||||||
import type { IDbBrand } from "@interfaces/database/IDbBrand";
|
import type { IDbBrand } from "@interfaces/database/IDbBrand";
|
||||||
import type { IDbCategory } from "@interfaces/database/IDbCategory";
|
import type { IDbCategory } from "@interfaces/database/IDbCategory";
|
||||||
|
import type {
|
||||||
|
IDbFactorizeInput,
|
||||||
|
IDbFactorizeOutput,
|
||||||
|
} from "@interfaces/database/IDbFactorize";
|
||||||
import type { IDbModel } from "@interfaces/database/IDbModel";
|
import type { IDbModel } from "@interfaces/database/IDbModel";
|
||||||
import type { IDbStatusResult } from "@interfaces/database/IDbStatusResult";
|
import type { IDbStatusResult } from "@interfaces/database/IDbStatusResult";
|
||||||
import type { IDbUser } from "@interfaces/database/IDbUser";
|
import type { IDbUser } from "@interfaces/database/IDbUser";
|
||||||
import type { IDbVehicle } from "@interfaces/database/IDbVehicle";
|
import type { IDbVehicle } from "@interfaces/database/IDbVehicle";
|
||||||
|
import type { IUserUpdate } from "@interfaces/services/IUserUpdate";
|
||||||
import mysql, { type Connection, type ConnectionOptions } from "mysql2";
|
import mysql, { type Connection, type ConnectionOptions } from "mysql2";
|
||||||
import { Logger } from "tslog";
|
import { Logger } from "tslog";
|
||||||
import {IUserUpdate} from "@interfaces/services/IUserUpdate";
|
|
||||||
import {IDbFactorizeInput, IDbFactorizeOutput} from "@interfaces/database/IDbFactorize";
|
|
||||||
|
|
||||||
const access: ConnectionOptions = {
|
const access: ConnectionOptions = {
|
||||||
host: `${process.env["MYSQL_HOST"]}`,
|
host: `${process.env["MYSQL_HOST"]}`,
|
||||||
@ -34,7 +37,9 @@ class MysqlHandler {
|
|||||||
this.Logger.error(`Error connecting to MySQL: ${err}`);
|
this.Logger.error(`Error connecting to MySQL: ${err}`);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
this.Logger.info(`\n\n> Connected to MySQL database (${access.database})\n`);
|
this.Logger.info(
|
||||||
|
`\n\n> Connected to MySQL database (${access.database})\n`,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
closeConnection() {
|
closeConnection() {
|
||||||
@ -62,27 +67,31 @@ class MysqlHandler {
|
|||||||
* @return {Promise<IDbFactorizeOutput>} - A promise resolving to the factorized output.
|
* @return {Promise<IDbFactorizeOutput>} - A promise resolving to the factorized output.
|
||||||
*/
|
*/
|
||||||
factorize(data: IDbFactorizeInput): Promise<IDbFactorizeOutput> {
|
factorize(data: IDbFactorizeInput): Promise<IDbFactorizeOutput> {
|
||||||
return new Promise((resolve, reject)=>{
|
return new Promise((resolve, reject) => {
|
||||||
try {
|
try {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
data.values.id ? delete data.values.id : null;
|
data.values.id ? delete data.values.id : null;
|
||||||
const _sqlQueryKeys = Object.keys(data.values).map((key: string) => `\'${key}\' = ?`)
|
const _sqlQueryKeys = Object.keys(data.values).map(
|
||||||
const values = Object.values(data.values).map((val)=>val)
|
(key: string) => `\'${key}\' = ?`,
|
||||||
this.Logger.debug(`\n\n>-> Factorized ${_sqlQueryKeys.length} keys for a prepare Query.\n>-> Action: ${data.actionName}\n`)
|
);
|
||||||
const sqlQueryKeys = _sqlQueryKeys.join(', ')
|
const values = Object.values(data.values).map((val) => val);
|
||||||
|
this.Logger.debug(
|
||||||
|
`\n\n>-> Factorized ${_sqlQueryKeys.length} keys for a prepare Query.\n>-> Action: ${data.actionName}\n`,
|
||||||
|
);
|
||||||
|
const sqlQueryKeys = _sqlQueryKeys.join(", ");
|
||||||
|
|
||||||
const factorizedOutput: IDbFactorizeOutput = {
|
const factorizedOutput: IDbFactorizeOutput = {
|
||||||
_keysTemplate: sqlQueryKeys,
|
_keysTemplate: sqlQueryKeys,
|
||||||
totalFields: _sqlQueryKeys.length,
|
totalFields: _sqlQueryKeys.length,
|
||||||
_valuesArray: values
|
_valuesArray: values,
|
||||||
}
|
};
|
||||||
resolve(factorizedOutput);
|
resolve(factorizedOutput);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (data.throwOnError) throw new Error(`${err}`)
|
if (data.throwOnError) throw new Error(`${err}`);
|
||||||
this.Logger.error(`\n|\n${err}\n|`)
|
this.Logger.error(`\n|\n${err}\n|`);
|
||||||
reject(`${err}`)
|
reject(`${err}`);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -184,20 +193,22 @@ const MySqlService = {
|
|||||||
update(handler: MysqlHandler, data: IUserUpdate): Promise<IDbStatusResult> {
|
update(handler: MysqlHandler, data: IUserUpdate): Promise<IDbStatusResult> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (data.gdpr && typeof data.gdpr !== typeof Date) {
|
if (data.gdpr && typeof data.gdpr !== typeof Date) {
|
||||||
return reject("Invalid gdpr date.")
|
return reject("Invalid gdpr date.");
|
||||||
}
|
}
|
||||||
if (!data.id) return reject("Id is undefined");
|
if (!data.id) return reject("Id is undefined");
|
||||||
if (data.id.length !== 36) return reject("Id invalid");
|
if (data.id.length !== 36) return reject("Id invalid");
|
||||||
try {
|
try {
|
||||||
handler.factorize({
|
handler
|
||||||
values: data,
|
.factorize({
|
||||||
actionName: `Update user ID::${data.id}`
|
values: data,
|
||||||
}).then((result)=>{
|
actionName: `Update user ID::${data.id}`,
|
||||||
const _sql = `UPDATE "users" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
})
|
||||||
handler.execute(_sql, result._valuesArray).then((result) => {
|
.then((result) => {
|
||||||
return resolve(result as unknown as IDbStatusResult);
|
const _sql = `UPDATE "users" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
||||||
|
handler.execute(_sql, result._valuesArray).then((result) => {
|
||||||
|
return resolve(result as unknown as IDbStatusResult);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})
|
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
reject(err as Error);
|
reject(err as Error);
|
||||||
}
|
}
|
||||||
@ -357,15 +368,17 @@ const MySqlService = {
|
|||||||
if (!data.id) return reject("Id is undefined");
|
if (!data.id) return reject("Id is undefined");
|
||||||
if (data.id.length !== 36) return reject("Id invalid");
|
if (data.id.length !== 36) return reject("Id invalid");
|
||||||
try {
|
try {
|
||||||
handler.factorize({
|
handler
|
||||||
values: data,
|
.factorize({
|
||||||
actionName: `Update brand ID::${data.id}`
|
values: data,
|
||||||
}).then((result)=>{
|
actionName: `Update brand ID::${data.id}`,
|
||||||
const _sql = `UPDATE "brands" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
})
|
||||||
handler.execute(_sql, result._valuesArray).then((result) => {
|
.then((result) => {
|
||||||
return resolve(result as unknown as IDbStatusResult);
|
const _sql = `UPDATE "brands" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
||||||
|
handler.execute(_sql, result._valuesArray).then((result) => {
|
||||||
|
return resolve(result as unknown as IDbStatusResult);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})
|
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
reject(err as Error);
|
reject(err as Error);
|
||||||
}
|
}
|
||||||
@ -579,15 +592,17 @@ const MySqlService = {
|
|||||||
if (!data.id) return reject("Id is undefined");
|
if (!data.id) return reject("Id is undefined");
|
||||||
if (data.id.length !== 36) return reject("Id invalid");
|
if (data.id.length !== 36) return reject("Id invalid");
|
||||||
try {
|
try {
|
||||||
handler.factorize({
|
handler
|
||||||
values: data,
|
.factorize({
|
||||||
actionName: `Update users ID::${data.id}`
|
values: data,
|
||||||
}).then((result)=>{
|
actionName: `Update users ID::${data.id}`,
|
||||||
const _sql = `UPDATE "users" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
})
|
||||||
handler.execute(_sql, result._valuesArray).then((result) => {
|
.then((result) => {
|
||||||
return resolve(result as unknown as IDbStatusResult);
|
const _sql = `UPDATE "users" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
||||||
|
handler.execute(_sql, result._valuesArray).then((result) => {
|
||||||
|
return resolve(result as unknown as IDbStatusResult);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})
|
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
reject(err as Error);
|
reject(err as Error);
|
||||||
}
|
}
|
||||||
@ -664,15 +679,17 @@ const MySqlService = {
|
|||||||
if (!data.id) return reject("Id is undefined");
|
if (!data.id) return reject("Id is undefined");
|
||||||
if (data.id.length !== 36) return reject("Id invalid");
|
if (data.id.length !== 36) return reject("Id invalid");
|
||||||
try {
|
try {
|
||||||
handler.factorize({
|
handler
|
||||||
values: data,
|
.factorize({
|
||||||
actionName: `Update vehicle ID::${data.id}`
|
values: data,
|
||||||
}).then((result)=>{
|
actionName: `Update vehicle ID::${data.id}`,
|
||||||
const _sql = `UPDATE "vehicles" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
})
|
||||||
handler.execute(_sql, result._valuesArray).then((result) => {
|
.then((result) => {
|
||||||
return resolve(result as unknown as IDbStatusResult);
|
const _sql = `UPDATE "vehicles" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
||||||
|
handler.execute(_sql, result._valuesArray).then((result) => {
|
||||||
|
return resolve(result as unknown as IDbStatusResult);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})
|
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
reject(err as Error);
|
reject(err as Error);
|
||||||
}
|
}
|
||||||
@ -782,15 +799,17 @@ const MySqlService = {
|
|||||||
if (!data.id) return reject("Id is undefined");
|
if (!data.id) return reject("Id is undefined");
|
||||||
if (data.id.length !== 36) return reject("Id invalid");
|
if (data.id.length !== 36) return reject("Id invalid");
|
||||||
try {
|
try {
|
||||||
handler.factorize({
|
handler
|
||||||
values: data,
|
.factorize({
|
||||||
actionName: `Update category ID::${data.id}`
|
values: data,
|
||||||
}).then((result)=>{
|
actionName: `Update category ID::${data.id}`,
|
||||||
const _sql = `UPDATE "categories" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
})
|
||||||
handler.execute(_sql, result._valuesArray).then((result) => {
|
.then((result) => {
|
||||||
return resolve(result as unknown as IDbStatusResult);
|
const _sql = `UPDATE "categories" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
|
||||||
|
handler.execute(_sql, result._valuesArray).then((result) => {
|
||||||
|
return resolve(result as unknown as IDbStatusResult);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})
|
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
reject(err as Error);
|
reject(err as Error);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user