import type IDbBrand from "@interfaces/database/IDbBrand"; import MysqlService from "@services/mysql.service"; import {Logger} from "tslog"; import { v4 as uuidv4 } from 'uuid'; const DbHandler = new MysqlService.Handler('BrandService') const logger = new Logger({name: 'BrandService'}) //SEC Blob validation /** * Creates a brand in the database with the given data. * * @param {IDbBrand} data - The data of the brand to be created. * @return {Promise} A promise that resolves to the result of the operation. */ async function createBrand(data: IDbBrand): Promise { const doesExist = await MysqlService.Brand.getBySlug(DbHandler, data.slug_name); if (doesExist) { logger.error(`Brand already exists (${data.slug_name})`) return {error: 'exist'} } const brandId = uuidv4(); const createdBrand = await MysqlService.Brand.insert(DbHandler, { id: brandId, slug_name: `${data.slug_name}`, display_name: `${data.display_name}`, image_blob: data.image_blob }); if (createdBrand) { logger.info(`Brand created successfully (${data.slug_name})`); return { success: true, brand: createdBrand }; } logger.error(`Failed to create brand (${data.slug_name})`); return { error: 'failed' }; } /** * Updates a brand in the database. * * @param {IDbBrand} data - The brand data to update. * @returns {Promise} - Indicates whether the update was successful or not. */ async function updateBrand(data: IDbBrand): Promise { if (!data.id) { logger.error("Brand ID is missing"); return false; } const doesExist = await MysqlService.Brand.getBySlug(DbHandler, data.slug_name); if (doesExist && doesExist.id !== data.id) { logger.error(`Brand already exists (${data.slug_name})`); return false; } const updatedBrand = await MysqlService.Brand.update(DbHandler, { id: data.id, slug_name: `${data.slug_name}`, display_name: `${data.display_name}`, image_blob: data.image_blob }); if (updatedBrand) { logger.info(`Brand updated successfully (${data.slug_name})`); return true; } logger.error(`Failed to update brand (${data.slug_name})`); return false; } const BrandService = { create: createBrand, update: updateBrand } export default BrandService;