diff --git a/backend/typescript/Dockerfile b/backend/typescript/Dockerfile index 6b86116..7073a78 100644 --- a/backend/typescript/Dockerfile +++ b/backend/typescript/Dockerfile @@ -13,5 +13,7 @@ RUN yarn install COPY . ./ +RUN npx prisma generate --schema=models/prisma/schema.prisma + EXPOSE 8080 ENTRYPOINT ["yarn", "dev"] diff --git a/backend/typescript/services/implementations/simpleEntityService.ts b/backend/typescript/services/implementations/simpleEntityService.ts index da18bb9..b6d7367 100644 --- a/backend/typescript/services/implementations/simpleEntityService.ts +++ b/backend/typescript/services/implementations/simpleEntityService.ts @@ -126,7 +126,10 @@ export default SimpleEntityService; // } mongodb // postgresql { -import PgSimpleEntity from "../../models/simpleEntity.model"; +import { PrismaClient, simple_entities, enum_entities_enum_field } from '@prisma/client'; + +const prisma = new PrismaClient(); + import { ISimpleEntityService, SimpleEntityRequestDTO, @@ -140,9 +143,9 @@ const Logger = logger(__filename); class SimpleEntityService implements ISimpleEntityService { /* eslint-disable class-methods-use-this */ async getEntity(id: string): Promise { - let entity: PgSimpleEntity | null; + let entity: simple_entities | null; try { - entity = await PgSimpleEntity.findByPk(id, { raw: true }); + entity = await prisma.simple_entities.findUnique({ where: { id: Number(id) } }); if (!entity) { throw new Error(`Entity id ${id} not found`); } @@ -155,7 +158,7 @@ class SimpleEntityService implements ISimpleEntityService { id: String(entity.id), stringField: entity.string_field, intField: entity.int_field, - enumField: entity.enum_field, + enumField: entity.enum_field as enum_entities_enum_field, stringArrayField: entity.string_array_field, boolField: entity.bool_field, }; @@ -163,21 +166,17 @@ class SimpleEntityService implements ISimpleEntityService { async getEntities(): Promise { try { - const entities: Array = await PgSimpleEntity.findAll({ - raw: true, - }); + const entities: Array = await prisma.simple_entities.findMany(); return entities.map((entity) => ({ id: String(entity.id), stringField: entity.string_field, intField: entity.int_field, - enumField: entity.enum_field, + enumField: entity.enum_field as enum_entities_enum_field, stringArrayField: entity.string_array_field, boolField: entity.bool_field, })); } catch (error: unknown) { - Logger.error( - `Failed to get entities. Reason = ${getErrorMessage(error)}`, - ); + Logger.error(`Failed to get entities. Reason = ${getErrorMessage(error)}`); throw error; } } @@ -185,26 +184,26 @@ class SimpleEntityService implements ISimpleEntityService { async createEntity( entity: SimpleEntityRequestDTO, ): Promise { - let newEntity: PgSimpleEntity | null; + let newEntity: simple_entities | null; try { - newEntity = await PgSimpleEntity.create({ - string_field: entity.stringField, - int_field: entity.intField, - enum_field: entity.enumField, - string_array_field: entity.stringArrayField, - bool_field: entity.boolField, + newEntity = await prisma.simple_entities.create({ + data: { + string_field: entity.stringField, + int_field: entity.intField, + enum_field: entity.enumField as enum_entities_enum_field, + string_array_field: entity.stringArrayField, + bool_field: entity.boolField, + }, }); } catch (error: unknown) { - Logger.error( - `Failed to create entity. Reason = ${getErrorMessage(error)}`, - ); + Logger.error(`Failed to create entity. Reason = ${getErrorMessage(error)}`); throw error; } return { id: String(newEntity.id), stringField: newEntity.string_field, intField: newEntity.int_field, - enumField: newEntity.enum_field, + enumField: newEntity.enum_field as enum_entities_enum_field, stringArrayField: newEntity.string_array_field, boolField: newEntity.bool_field, }; @@ -214,24 +213,18 @@ class SimpleEntityService implements ISimpleEntityService { id: string, entity: SimpleEntityRequestDTO, ): Promise { - let resultingEntity: PgSimpleEntity | null; - let updateResult: [number, PgSimpleEntity[]] | null; + let resultingEntity: simple_entities | null; try { - updateResult = await PgSimpleEntity.update( - { + resultingEntity = await prisma.simple_entities.update( + { where: { id: Number(id) }, + data: { string_field: entity.stringField, int_field: entity.intField, - enum_field: entity.enumField, + enum_field: entity.enumField as enum_entities_enum_field, string_array_field: entity.stringArrayField, bool_field: entity.boolField, }, - { where: { id }, returning: true }, - ); - - if (!updateResult[0]) { - throw new Error(`Entity id ${id} not found`); - } - [, [resultingEntity]] = updateResult; + }); } catch (error: unknown) { Logger.error( `Failed to update entity. Reason = ${getErrorMessage(error)}`, @@ -242,7 +235,7 @@ class SimpleEntityService implements ISimpleEntityService { id: String(resultingEntity.id), stringField: resultingEntity.string_field, intField: resultingEntity.int_field, - enumField: resultingEntity.enum_field, + enumField: resultingEntity.enum_field as enum_entities_enum_field, stringArrayField: resultingEntity.string_array_field, boolField: resultingEntity.bool_field, }; @@ -250,12 +243,9 @@ class SimpleEntityService implements ISimpleEntityService { async deleteEntity(id: string): Promise { try { - const deleteResult: number | null = await PgSimpleEntity.destroy({ - where: { id }, + await prisma.simple_entities.delete({ + where: { id: Number(id) } }); - if (!deleteResult) { - throw new Error(`Entity id ${id} not found`); - } return id; } catch (error: unknown) { Logger.error(