feat(services): refactor update methods in mysql service

This commit:
- Standardizes the data handling in all update methods, using `handler.factorize()`
- Moves gdpr date validation to the top of 'update' method to reject it earliest
- Removes the unused `_values` and `_template` variables.

Signed-off-by: Mathis <yidhra@tuta.io>
This commit is contained in:
Mathis H (Avnyr) 2024-04-30 16:50:40 +02:00
parent f6d18fc58d
commit 23ce32cb6f
Signed by: Mathis
GPG Key ID: DD9E0666A747D126

View File

@ -183,24 +183,21 @@ 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.id) return reject("Id is undefined");
if (data.id.length !== 36) return reject("Id invalid");
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.length !== 36) return reject("Id invalid");
try { try {
const _values = []; handler.factorize({
const _template = ` values: data,
${data.username ? "`username` = ?," && _values.push(data.username) as unknown as void : null} actionName: `Update user ID::${data.id}`
${data.firstname ? "`firstname` = ?," : null} }).then((result)=>{
${data.lastname ? "`lastname` = ?," : null} const _sql = `UPDATE "users" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
${data.dob ? "`dob` = ?," : null} handler.execute(_sql, result._valuesArray).then((result) => {
${data.gdpr ? "`gdpr` = ?," : null}`
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) { } catch (err: unknown) {
reject(err as Error); reject(err as Error);
} }
@ -359,16 +356,16 @@ const MySqlService = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
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.factorize({
values: data, values: data,
actionName: `Update user ID::${data.id}` actionName: `Update brand ID::${data.id}`
}) }).then((result)=>{
const _sql = `UPDATE "brands" SET ${_template} WHERE 'id' = ?`; const _sql = `UPDATE "brands" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
handler.execute(_sql, _values).then((result) => { handler.execute(_sql, result._valuesArray).then((result) => {
return resolve(result as unknown as IDbStatusResult); return resolve(result as unknown as IDbStatusResult);
}); });
})
} catch (err: unknown) { } catch (err: unknown) {
reject(err as Error); reject(err as Error);
} }
@ -581,31 +578,16 @@ const MySqlService = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
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 {
const _template = ` handler.factorize({
${data.slug_name ? "`slug_name` = ?," : null} values: data,
${data.display_name ? "`display_name` = ?," : null} actionName: `Update users ID::${data.id}`
${data.brand_id ? "`brand_id` = ?," : null} }).then((result)=>{
${data.category_id ? "`category_id` = ?," : null} const _sql = `UPDATE "users" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
${data.image_blob ? "`image_blob` = ?," : null} handler.execute(_sql, result._valuesArray).then((result) => {
${data.is_trending ? "`is_trending` = ?," : null}
${data.base_price ? "`base_price` = ?," : null}`;
const _values = [
data.slug_name,
data.display_name,
data.brand_id,
data.category_id,
data.image_blob,
data.is_trending,
data.base_price,
data.id,
];
const _sql = `UPDATE "models" 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) { } catch (err: unknown) {
reject(err as Error); reject(err as Error);
} }
@ -681,25 +663,16 @@ const MySqlService = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
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 {
const _template = ` handler.factorize({
${data.model_id ? "`model_id` = ?," : null} values: data,
${data.plate_number ? "`plate_number` = ?," : null} actionName: `Update vehicle ID::${data.id}`
${data.odometer ? "`odometer` = ?," : null} }).then((result)=>{
${data.health_state ? "`health_state` = ?," : null}`; const _sql = `UPDATE "vehicles" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
handler.execute(_sql, result._valuesArray).then((result) => {
const _values = [
data.model_id,
data.plate_number,
data.odometer,
data.health_state,
data.id,
];
const _sql = `UPDATE "vehicles" 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) { } catch (err: unknown) {
reject(err as Error); reject(err as Error);
} }
@ -808,17 +781,16 @@ const MySqlService = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
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 {
const _template = ` handler.factorize({
${data.slug_name ? "`slug_name` = ?," : null} values: data,
${data.display_name ? "`display_name` = ?," : null}`; actionName: `Update category ID::${data.id}`
}).then((result)=>{
const _values = [data.slug_name, data.display_name, data.id]; const _sql = `UPDATE "categories" SET ${result._keysTemplate} WHERE 'id' = '${data.id}'`;
const _sql = `UPDATE "categories" SET ${_template} WHERE 'id' = ?`; handler.execute(_sql, result._valuesArray).then((result) => {
handler.execute(_sql, _values).then((result) => {
return resolve(result as unknown as IDbStatusResult); return resolve(result as unknown as IDbStatusResult);
}); });
})
} catch (err: unknown) { } catch (err: unknown) {
reject(err as Error); reject(err as Error);
} }