diff --git a/src/services/brand.service.ts b/src/services/brand.service.ts new file mode 100644 index 0000000..ff3bd7b --- /dev/null +++ b/src/services/brand.service.ts @@ -0,0 +1,41 @@ +import 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' }; +} + +const BrandService = { + create: createBrand +} + +export default BrandService; \ No newline at end of file