From 948045dceda13f9168e1440e8e95525d1c64689c Mon Sep 17 00:00:00 2001 From: Remi R Date: Mon, 11 Dec 2023 13:55:29 +0100 Subject: [PATCH] feat: add IngredientsClassesGateway --- .../gateways/ingredientsClasses.gateway.ts | 36 +++++++++++++++++++ API-Project/src/types/ingredientsClasses.ts | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/API-Project/src/gateways/ingredientsClasses.gateway.ts b/API-Project/src/gateways/ingredientsClasses.gateway.ts index e69de29..62064ba 100644 --- a/API-Project/src/gateways/ingredientsClasses.gateway.ts +++ b/API-Project/src/gateways/ingredientsClasses.gateway.ts @@ -0,0 +1,36 @@ +import { Connection } from "../database/connection" +import { IngredientsClasses } from "../types/ingredientsClasses" + +export class IngredientsClassesGateway { + connection: Connection + + constructor() { + this.connection = new Connection() + } + + + async getForIngredient(id: number): Promise { + const client = await this.connection.getPoolClient() + let classes : IngredientsClasses[] = [] + + const query = { + text: 'SELECT name FROM Composed, IngredientsClasses WHERE idIngredient = $1 AND idClass = id', + values: [id], + } + + const res = await client.query(query) + + client.release() + + for (let row of res.rows) { + const classNameString: string = row.name; + const classNameEnum: IngredientsClasses = IngredientsClasses[classNameString as keyof typeof IngredientsClasses]; + + if (classNameEnum !== undefined) { + classes.push(classNameEnum); + } + } + + return classes + } +} \ No newline at end of file diff --git a/API-Project/src/types/ingredientsClasses.ts b/API-Project/src/types/ingredientsClasses.ts index 11e3a01..9fa02e8 100644 --- a/API-Project/src/types/ingredientsClasses.ts +++ b/API-Project/src/types/ingredientsClasses.ts @@ -1,4 +1,4 @@ -enum IngredientsClasses { +export enum IngredientsClasses { DairyFree = 'DAIRY_FREE', GlutenFree = 'GLUTEN_FREE', Porcless = 'PORCLESS',