From eab04fb12e4c2127cb31f6023d6508d95a4ccb24 Mon Sep 17 00:00:00 2001 From: OxSaitama Date: Mon, 17 Apr 2023 18:35:19 +0200 Subject: [PATCH] refacto: naming uuid to uid --- package.json | 3 +- .../api/super-admin/CustomersController.ts | 20 +-- src/app/api/super-admin/UsersController.ts | 8 +- .../20230426144239_init/migration.sql | 1 + src/common/databases/schema.prisma | 116 +++++++++--------- src/common/databases/seeders/seeder.ts | 23 ++++ .../repositories/CustomersRepository.ts | 36 ++++-- src/common/repositories/UsersRepository.ts | 32 +++-- .../CustomersService/CustomersService.ts | 23 +++- .../super-admin/UsersService/UsersService.ts | 17 ++- 10 files changed, 176 insertions(+), 103 deletions(-) diff --git a/package.json b/package.json index e4da04d1..84e273fa 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,9 @@ "start": "tsc && node ./dist/entries/App.js", "api:start": "npm run migrate && npm run start", "dev": "nodemon -V", - "build:test": "tsc && mocha ./dist/entries/Test.js", "format": "prettier --write src", - "migrate": "npx prisma migrate deploy", "migrate:test": "dotenv -e .env.test -- npx prisma migrate deploy", + "migrate": "npx prisma migrate deploy", "docker:up:test": "docker-compose -f docker-compose-test.yml up -d", "docker:down:test": "docker-compose down", "test": "tsc && npm run docker:up:test && npm run migrate:test && dotenv -e .env.test -- jest -i --verbose ./dist/test/* && npm run docker:down:test" diff --git a/src/app/api/super-admin/CustomersController.ts b/src/app/api/super-admin/CustomersController.ts index 6a7c5414..9066c904 100644 --- a/src/app/api/super-admin/CustomersController.ts +++ b/src/app/api/super-admin/CustomersController.ts @@ -3,11 +3,11 @@ import { Controller, Get, Post, Put } from "@ControllerPattern/index"; import ApiController from "@Common/system/controller-pattern/ApiController"; import CustomersService from "@Services/super-admin/CustomersService/CustomersService"; import { Service } from "typedi"; -import ObjectHydrate from "@Common/helpers/ObjectHydrate"; import { Customer } from "le-coffre-resources/dist/SuperAdmin"; import { Customers } from "@prisma/client"; import { validateOrReject } from "class-validator"; + @Controller() @Service() export default class CustomersController extends ApiController { @@ -23,12 +23,12 @@ export default class CustomersController extends ApiController { try { //get query const query = JSON.parse(req.query["q"] as string); - + //call service to get prisma entity - const customersEntity: Customers[] = await this.customersService.get(query); + const customersEntity = await this.customersService.get(query); //Hydrate ressource with prisma entity - const customers = ObjectHydrate.map(Customer, customersEntity, { strategy: "exposeAll" }); + const customers = Customer.map(Customer, customersEntity, { strategy: "excludeAll" }); //success this.httpSuccess(response, customers); @@ -46,7 +46,7 @@ export default class CustomersController extends ApiController { try { //init IUser resource with request body values const customerEntity = new Customer(); - ObjectHydrate.hydrate(customerEntity, req.body); + Customer.hydrate(customerEntity, req.body); //validate user await validateOrReject(customerEntity, { groups: ["createCustomer"], forbidUnknownValues: false}); @@ -55,8 +55,8 @@ export default class CustomersController extends ApiController { const prismaEntityCreated = await this.customersService.create(customerEntity); //Hydrate ressource with prisma entity - const customerEntityCreated = ObjectHydrate.hydrate(new Customer(), prismaEntityCreated, { - strategy: "exposeAll", + const customerEntityCreated = Customer.hydrate(prismaEntityCreated, { + strategy: "excludeAll", }); //success @@ -79,7 +79,7 @@ export default class CustomersController extends ApiController { } //init IUser resource with request body values const customerEntity = new Customer(); - ObjectHydrate.hydrate(customerEntity, req.body); + Customer.hydrate(customerEntity, req.body); //validate user await validateOrReject(customerEntity, { groups: ["updateCustomer"] , forbidUnknownValues: false}); @@ -87,7 +87,7 @@ export default class CustomersController extends ApiController { const prismaEntityUpdated = await this.customersService.update(uid, customerEntity); //Hydrate ressource with prisma entity - const customerEntityUpdated = ObjectHydrate.hydrate(new Customer(), prismaEntityUpdated, { + const customerEntityUpdated = Customer.hydrate(prismaEntityUpdated, { strategy: "exposeAll", }); @@ -121,7 +121,7 @@ export default class CustomersController extends ApiController { } //Hydrate ressource with prisma entity - const customer = ObjectHydrate.hydrate(new Customer(), customerEntity, { strategy: "exposeAll" }); + const customer = Customer.hydrate(customerEntity, { strategy: "exposeAll" }); //success this.httpSuccess(response, customer); diff --git a/src/app/api/super-admin/UsersController.ts b/src/app/api/super-admin/UsersController.ts index 9726c8e1..0ed184d0 100644 --- a/src/app/api/super-admin/UsersController.ts +++ b/src/app/api/super-admin/UsersController.ts @@ -7,7 +7,6 @@ import ObjectHydrate from "@Common/helpers/ObjectHydrate"; import { validateOrReject } from "class-validator"; import User from "le-coffre-resources/dist/Notary"; import { Users } from "@prisma/client"; -import { plainToInstance } from "class-transformer"; @Controller() @Service() @@ -27,12 +26,9 @@ export default class UsersController extends ApiController { //call service to get prisma entity const usersEntity: Users[] = await this.usersService.get(query); - + //Hydrate ressource with prisma entity - const users = plainToInstance(User, usersEntity, { - enableImplicitConversion: true, - excludeExtraneousValues: false, - }); + const users = User.map(User, usersEntity, {excludeExtraneousValues: true}) //success this.httpSuccess(response, users); diff --git a/src/common/databases/migrations/20230426144239_init/migration.sql b/src/common/databases/migrations/20230426144239_init/migration.sql index a7c0a49f..5244e927 100644 --- a/src/common/databases/migrations/20230426144239_init/migration.sql +++ b/src/common/databases/migrations/20230426144239_init/migration.sql @@ -443,3 +443,4 @@ ALTER TABLE "deed_type_has_document_types" ADD CONSTRAINT "deed_type_has_documen -- AddForeignKey ALTER TABLE "deed_type_has_document_types" ADD CONSTRAINT "deed_type_has_document_types_deed_type_uid_fkey" FOREIGN KEY ("deed_type_uid") REFERENCES "deed_types"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + diff --git a/src/common/databases/schema.prisma b/src/common/databases/schema.prisma index e0293f41..bace5ed4 100644 --- a/src/common/databases/schema.prisma +++ b/src/common/databases/schema.prisma @@ -18,7 +18,7 @@ datasource db { // id String @unique @default(auto()) @map("_id") @db.ObjectId // @map de la table checker le naming avec le tiret model Addresses { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) address String @db.VarChar(255) city String @db.VarChar(255) zip_code Int @@ -31,15 +31,15 @@ model Addresses { } model Contacts { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) first_name String @db.VarChar(255) last_name String @db.VarChar(255) email String @unique @db.VarChar(255) phone_number String? @db.VarChar(50) - cell_phone_number String? @unique @db.VarChar(50) + cell_phone_number String @unique @db.VarChar(50) civility ECivility @default(MALE) - address Addresses? @relation(fields: [address_uid], references: [uid], onDelete: Cascade) - address_uid String @unique @db.VarChar(255) + address Addresses? @relation(fields: [address_uid], references: [uid], onDelete: Cascade) + address_uid String @unique @db.VarChar(255) birthdate DateTime? created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -50,14 +50,14 @@ model Contacts { } model Users { - uid String @id @unique @default(uuid()) @map("uid") + uid String @id @unique @default(uuid()) @map("uid") idNot String @unique @db.VarChar(255) contact Contacts @relation(fields: [contact_uid], references: [uid], onDelete: Cascade) - contact_uid String @unique @db.VarChar(255) + contact_uid String @unique @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt office_membership Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) - office_uid String @db.VarChar(255) + office_uid String @db.VarChar(255) user_has_notifications UserHasNotifications[] office_folder_has_stakeholder OfficeFolderHasStakeholders[] @@ -65,28 +65,28 @@ model Users { } model Offices { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) idNot String @unique @db.VarChar(255) name String @db.VarChar(255) crpcen String @unique @db.VarChar(255) address Addresses @relation(fields: [address_uid], references: [uid], onDelete: Cascade) - address_uid String @unique @db.VarChar(255) + address_uid String @unique @db.VarChar(255) office_status EOfficeStatus @default(DESACTIVATED) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt deed_types DeedTypes[] users Users[] office_folders OfficeFolders[] - document_types DocumentTypes[] + document_types DocumentTypes[] @@map("offices") } model Customers { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) status ECustomerStatus @default(PENDING) contact Contacts @relation(fields: [contact_uid], references: [uid], onDelete: Cascade) - contact_uid String @unique @db.VarChar(255) + contact_uid String @unique @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt office_folder_has_customers OfficeFolderHasCustomers[] @@ -96,11 +96,11 @@ model Customers { } model UserHasNotifications { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) user Users @relation(fields: [user_uid], references: [uid]) - user_uid String @db.VarChar(255) + user_uid String @db.VarChar(255) notification Notifications @relation(fields: [notification_uid], references: [uid], onDelete: Cascade) - notification_uid String @db.VarChar(255) + notification_uid String @db.VarChar(255) notification_status ENotificationStatus @default(UNREAD) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -110,7 +110,7 @@ model UserHasNotifications { } model Notifications { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) message String @db.VarChar(255) redirection_url String @db.VarChar(255) created_at DateTime? @default(now()) @@ -121,16 +121,16 @@ model Notifications { } model OfficeFolders { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) folder_number String @db.VarChar(255) name String @db.VarChar(255) description String? @db.VarChar(255) archived_description String? @db.VarChar(255) status EFolderStatus @default(LIVE) deed Deeds @relation(fields: [deed_uid], references: [uid], onDelete: Cascade) - deed_uid String @unique @db.VarChar(255) + deed_uid String @unique @db.VarChar(255) office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) - office_uid String @db.VarChar(255) + office_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt office_folder_has_customers OfficeFolderHasCustomers[] @@ -143,12 +143,12 @@ model OfficeFolders { model OfficeFolderHasCustomers { uid String @id @unique @default(uuid()) - customer Customers @relation(fields: [customer_uid], references: [uid], onDelete: Cascade) + customer Customers @relation(fields: [customer_uid], references: [uid], onDelete: Cascade) customer_uid String @db.VarChar(255) - office_folder OfficeFolders @relation(fields: [office_folder_uid], references: [uid], onDelete: Cascade) + office_folder OfficeFolders @relation(fields: [office_folder_uid], references: [uid], onDelete: Cascade) office_folder_uid String @db.VarChar(255) - created_at DateTime? @default(now()) - updated_at DateTime? @updatedAt + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt @@unique([office_folder_uid, customer_uid]) @@map("office_folder_has_customers") @@ -156,12 +156,12 @@ model OfficeFolderHasCustomers { model OfficeFolderHasStakeholders { uid String @id @unique @default(uuid()) - office_folder OfficeFolders @relation(fields: [office_folder_uid], references: [uid], onDelete: Cascade) + office_folder OfficeFolders @relation(fields: [office_folder_uid], references: [uid], onDelete: Cascade) office_folder_uid String @db.VarChar(255) - user_stakeholder Users @relation(fields: [user_stakeholder_uid], references: [uid], onDelete: Cascade) + user_stakeholder Users @relation(fields: [user_stakeholder_uid], references: [uid], onDelete: Cascade) user_stakeholder_uid String @db.VarChar(255) - created_at DateTime? @default(now()) - updated_at DateTime? @updatedAt + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt @@unique([office_folder_uid, user_stakeholder_uid]) @@map("office_folder_has_stakeholder") @@ -169,29 +169,29 @@ model OfficeFolderHasStakeholders { model Documents { uid String @id @unique @default(uuid()) - document_status EDocumentStatus @default(ASKED) - document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid]) + document_status EDocumentStatus @default(ASKED) + document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid]) document_type_uid String @db.VarChar(255) - blockchain_anchor BlockchainAnchors? @relation(fields: [blockchain_anchor_uid], references: [uid]) + blockchain_anchor BlockchainAnchors? @relation(fields: [blockchain_anchor_uid], references: [uid]) blockchain_anchor_uid String? @db.VarChar(255) - folder OfficeFolders @relation(fields: [folder_uid], references: [uid]) + folder OfficeFolders @relation(fields: [folder_uid], references: [uid]) folder_uid String @db.VarChar(255) - depositor Customers @relation(fields: [depositor_uid], references: [uid], onDelete: Cascade) + depositor Customers @relation(fields: [depositor_uid], references: [uid], onDelete: Cascade) depositor_uid String @db.VarChar(255) - created_at DateTime? @default(now()) - updated_at DateTime? @updatedAt - files Files[] - document_history DocumentHistory[] + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt + files Files[] + document_history DocumentHistory[] @@map("documents") } model DocumentHistory { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) document_status EDocumentStatus @default(ASKED) refused_reason String? @db.VarChar(255) document Documents @relation(fields: [document_uid], references: [uid], onDelete: Cascade) - document_uid String @db.VarChar(255) + document_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -200,17 +200,17 @@ model DocumentHistory { model Files { uid String @id @unique @default(uuid()) - document Documents @relation(fields: [document_uid], references: [uid], onDelete: Cascade) + document Documents @relation(fields: [document_uid], references: [uid], onDelete: Cascade) document_uid String @db.VarChar(255) - file_path String @unique @db.VarChar(255) - created_at DateTime? @default(now()) - updated_at DateTime? @updatedAt + file_path String @unique @db.VarChar(255) + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt @@map("files") } model BlockchainAnchors { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) smartSigJobId String @unique @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -220,12 +220,12 @@ model BlockchainAnchors { } model DocumentTypes { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) name String @db.VarChar(255) public_description String @db.VarChar(255) private_description String? @db.VarChar(255) office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) - office_uid String @db.VarChar(255) + office_uid String @db.VarChar(255) archived_at DateTime? created_at DateTime? @default(now()) updated_at DateTime? @updatedAt @@ -239,21 +239,21 @@ model DocumentTypes { model DeedHasDocumentTypes { uid String @id @unique @default(uuid()) - document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid], onDelete: Cascade) + document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid], onDelete: Cascade) document_type_uid String @db.VarChar(255) - deed Deeds @relation(fields: [deed_uid], references: [uid], onDelete: Cascade) + deed Deeds @relation(fields: [deed_uid], references: [uid], onDelete: Cascade) deed_uid String @db.VarChar(255) - created_at DateTime? @default(now()) - updated_at DateTime? @updatedAt + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt @@unique([deed_uid, document_type_uid]) @@map("deed_has_document_types") } model Deeds { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) deed_type DeedTypes @relation(fields: [deed_type_uid], references: [uid], onDelete: Cascade) - deed_type_uid String @db.VarChar(255) + deed_type_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt deed_has_document_types DeedHasDocumentTypes[] @@ -263,12 +263,12 @@ model Deeds { } model DeedTypes { - uid String @id @unique @default(uuid()) + uid String @id @unique @default(uuid()) name String @db.VarChar(255) description String @db.VarChar(255) archived_at DateTime? office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade) - office_uid String @db.VarChar(255) + office_uid String @db.VarChar(255) created_at DateTime? @default(now()) updated_at DateTime? @updatedAt deed Deeds[] @@ -280,12 +280,12 @@ model DeedTypes { model DeedTypeHasDocumentTypes { uid String @id @unique @default(uuid()) - document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid], onDelete: Cascade) + document_type DocumentTypes @relation(fields: [document_type_uid], references: [uid], onDelete: Cascade) document_type_uid String @db.VarChar(255) - deed_type DeedTypes @relation(fields: [deed_type_uid], references: [uid], onDelete: Cascade) + deed_type DeedTypes @relation(fields: [deed_type_uid], references: [uid], onDelete: Cascade) deed_type_uid String @db.VarChar(255) - created_at DateTime? @default(now()) - updated_at DateTime? @updatedAt + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt @@unique([deed_type_uid, document_type_uid]) @@map("deed_type_has_document_types") diff --git a/src/common/databases/seeders/seeder.ts b/src/common/databases/seeders/seeder.ts index d76ede13..577511ca 100644 --- a/src/common/databases/seeders/seeder.ts +++ b/src/common/databases/seeders/seeder.ts @@ -55,6 +55,7 @@ import { const uidOfficeFolder1: string = randomString(); const uidOfficeFolder2: string = randomString(); +<<<<<<< HEAD const uidOfficeFolder3: string = randomString(); const uidOfficeFolder4: string = randomString(); const uidOfficeFolder5: string = randomString(); @@ -64,6 +65,11 @@ import { const uidDeed3: string = randomString(); const uidDeed4: string = randomString(); const uidDeed5: string = randomString(); +======= + + const uidDeed1: string = randomString(); + const uidDeed2: string = randomString(); +>>>>>>> 7122ff1 (uuid --> uid) const uidDeedType1: string = randomString(); const uidDeedType2: string = randomString(); @@ -199,8 +205,13 @@ import { const officeFolders: OfficeFolders[] = [ { uid: uidOfficeFolder1, +<<<<<<< HEAD folder_number: "0001", name: "Dossier", +======= + folder_number: randomString(), + name: "0001", +>>>>>>> 7122ff1 (uuid --> uid) deed_uid: uidDeed1, status: EFolderStatus.LIVE, created_at: new Date(), @@ -211,8 +222,13 @@ import { }, { uid: uidOfficeFolder2, +<<<<<<< HEAD folder_number: "0002", name: "Dossier", +======= + folder_number: randomString(), + name: "0001", +>>>>>>> 7122ff1 (uuid --> uid) deed_uid: uidDeed2, status: EFolderStatus.LIVE, created_at: new Date(), @@ -263,17 +279,24 @@ import { { uid: uidDeed1, deed_type_uid: uidDeedType1, +<<<<<<< HEAD created_at: new Date(), updated_at: new Date(), }, { uid: uidDeed2, deed_type_uid: uidDeedType2, +======= +>>>>>>> 7122ff1 (uuid --> uid) created_at: new Date(), updated_at: new Date(), }, { +<<<<<<< HEAD uid: uidDeed3, +======= + uid: uidDeed2, +>>>>>>> 7122ff1 (uuid --> uid) deed_type_uid: uidDeedType2, created_at: new Date(), updated_at: new Date(), diff --git a/src/common/repositories/CustomersRepository.ts b/src/common/repositories/CustomersRepository.ts index b08bc0d5..e4414f65 100644 --- a/src/common/repositories/CustomersRepository.ts +++ b/src/common/repositories/CustomersRepository.ts @@ -1,7 +1,7 @@ import Database from "@Common/databases/database"; import BaseRepository from "@Repositories/BaseRepository"; import { Service } from "typedi"; -import { Customers, ECivility, ECustomerStatus, Prisma } from "@prisma/client"; +import { Contacts, Customers, ECivility, ECustomerStatus, Prisma } from "@prisma/client"; import { Customer } from "le-coffre-resources/dist/SuperAdmin"; @Service() @@ -19,15 +19,24 @@ export default class CustomersRepository extends BaseRepository { /** * @description : Find many customers */ - public async findMany(query: any): Promise { + public async findMany(query: Prisma.CustomersFindManyArgs): Promise< + (Customers & { + contact: Contacts; + })[] + > { query.take = Math.min(query.take || this.defaultFetchRows, this.maxFetchRows); - return this.model.findMany(query); + if (!query.include) return this.model.findMany({ ...query, include: { contact: true } }); + return this.model.findMany({ ...query, include: { contact: { include: { address: true } } } }); } /** * @description : Create a customer */ - public async create(customer: Customer): Promise { + public async create(customer: Customer): Promise< + Customers & { + contact: Contacts; + } + > { const createArgs: Prisma.CustomersCreateArgs = { data: { status: ECustomerStatus.PENDING, @@ -39,7 +48,7 @@ export default class CustomersRepository extends BaseRepository { phone_number: customer.contact.phone_number, cell_phone_number: customer.contact?.cell_phone_number, civility: ECivility[customer.contact.civility as keyof typeof ECivility], - address: {} + address: {}, }, }, }, @@ -52,13 +61,20 @@ export default class CustomersRepository extends BaseRepository { city: customer.contact.address!.city, }; } - return this.model.create(createArgs); + return this.model.create({ ...createArgs, include: { contact: true } }); } /** * @description : Update data from a customer */ - public async update(uid: string, customer: Customer): Promise { + public async update( + uid: string, + customer: Customer, + ): Promise< + Customers & { + contact: Contacts; + } + > { const updateArgs: Prisma.CustomersUpdateArgs = { where: { uid: uid, @@ -73,11 +89,11 @@ export default class CustomersRepository extends BaseRepository { phone_number: customer.contact.phone_number, cell_phone_number: customer.contact.cell_phone_number, civility: ECivility[customer.contact.civility as keyof typeof ECivility], - address: {} + address: {}, }, }, }, - } + }; if (customer.contact.address) { updateArgs.data.contact!.update!.address!.update = { address: customer.contact.address!.address, @@ -85,7 +101,7 @@ export default class CustomersRepository extends BaseRepository { city: customer.contact.address!.city, }; } - return this.model.update(updateArgs); + return this.model.update({ ...updateArgs, include: { contact: true } }); } /** diff --git a/src/common/repositories/UsersRepository.ts b/src/common/repositories/UsersRepository.ts index 72a521c0..90240e3a 100644 --- a/src/common/repositories/UsersRepository.ts +++ b/src/common/repositories/UsersRepository.ts @@ -1,7 +1,7 @@ import Database from "@Common/databases/database"; import BaseRepository from "@Repositories/BaseRepository"; import { Service } from "typedi"; -import { ECivility, Prisma, Users } from "@prisma/client"; +import { Addresses, Contacts, ECivility, Offices, Prisma, Users } from "@prisma/client"; import User from "le-coffre-resources/dist/SuperAdmin"; @Service() @@ -19,15 +19,26 @@ export default class UsersRepository extends BaseRepository { /** * @description : Find many users */ - public async findMany(query: any): Promise { + public async findMany(query: Prisma.UsersFindManyArgs): Promise< + (Users & { + contact: Contacts; + office_membership: Offices & { + address: Addresses + }; + })[] + > { query.take = Math.min(query.take || this.defaultFetchRows, this.maxFetchRows); - return this.model.findMany(query); + if (!query.include) return this.model.findMany({ ...query, include: { contact: true, office_membership: { include: { address: true } } } }); + return this.model.findMany({ ...query, include: { contact: { include: { address: true } }, office_membership: { include: { address: true } } } }); } /** * @description : Create a user */ - public async create(user: User): Promise { + public async create(user: User): Promise { const createArgs: Prisma.UsersCreateArgs = { data: { idNot: user.idNot, @@ -62,7 +73,7 @@ export default class UsersRepository extends BaseRepository { }, }, }, - } + }; if (user.contact.address) { createArgs.data.contact!.create!.address!.create = { address: user.contact.address!.address, @@ -70,13 +81,16 @@ export default class UsersRepository extends BaseRepository { city: user.contact.address!.city, }; } - return this.model.create(createArgs); + return this.model.create({...createArgs, include : { contact: true, office_membership: true}}); } /** * @description : Update data from a user */ - public async update(uid: string, user: User): Promise { + public async update(uid: string, user: User): Promise { const updateArgs: Prisma.UsersUpdateArgs = { where: { uid: uid, @@ -110,7 +124,7 @@ export default class UsersRepository extends BaseRepository { phone_number: user.contact.phone_number, cell_phone_number: user.contact.cell_phone_number, civility: ECivility[user.contact.civility as keyof typeof ECivility], - address: {} + address: {}, }, }, }, @@ -122,7 +136,7 @@ export default class UsersRepository extends BaseRepository { city: user.contact.address!.city, }; } - return this.model.update(updateArgs); + return this.model.update({...updateArgs, include : { contact: true, office_membership: true}}); } /** diff --git a/src/services/super-admin/CustomersService/CustomersService.ts b/src/services/super-admin/CustomersService/CustomersService.ts index 20470182..10ee7231 100644 --- a/src/services/super-admin/CustomersService/CustomersService.ts +++ b/src/services/super-admin/CustomersService/CustomersService.ts @@ -1,4 +1,4 @@ -import { Customers } from "@prisma/client"; +import { Contacts, Customers } from "@prisma/client"; import CustomersRepository from "@Repositories/CustomersRepository"; import BaseService from "@Services/BaseService"; import { Customer } from "le-coffre-resources/dist/SuperAdmin"; @@ -14,7 +14,11 @@ export default class CustomersService extends BaseService { * @description : Get all Customers * @throws {Error} If Customers cannot be get */ - public async get(query: any) { + public async get(query: any): Promise< + (Customers & { + contact: Contacts; + })[] + > { return this.customerRepository.findMany(query); } @@ -22,7 +26,11 @@ export default class CustomersService extends BaseService { * @description : Create a new customer * @throws {Error} If customer cannot be created */ - public async create(customerEntity: Customer): Promise { + public async create(customerEntity: Customer): Promise< + Customers & { + contact: Contacts; + } + > { return this.customerRepository.create(customerEntity); } @@ -30,7 +38,14 @@ export default class CustomersService extends BaseService { * @description : Modify a customer * @throws {Error} If customer cannot be modified */ - public async update(uid: string, customerEntity: Customer): Promise { + public async update( + uid: string, + customerEntity: Customer, + ): Promise< + Customers & { + contact: Contacts; + } + > { return this.customerRepository.update(uid, customerEntity); } diff --git a/src/services/super-admin/UsersService/UsersService.ts b/src/services/super-admin/UsersService/UsersService.ts index 1e9c4445..f8e914a2 100644 --- a/src/services/super-admin/UsersService/UsersService.ts +++ b/src/services/super-admin/UsersService/UsersService.ts @@ -3,7 +3,7 @@ import "reflect-metadata"; import { Service } from "typedi"; import UsersRepository from "@Repositories/UsersRepository"; import User from "le-coffre-resources/dist/SuperAdmin"; -import { Users } from "@prisma/client"; +import { Contacts, Offices, Prisma, Users } from "@prisma/client"; @Service() export default class UsersService extends BaseService { @@ -15,7 +15,10 @@ export default class UsersService extends BaseService { * @description : Get all users * @throws {Error} If users cannot be get */ - public get(query: any): Promise { + public get(query: Prisma.UsersFindManyArgs): Promise<(Users & { + contact: Contacts; + office_membership: Offices; + })[]> { return this.userRepository.findMany(query); } @@ -23,7 +26,10 @@ export default class UsersService extends BaseService { * @description : Create a user * @throws {Error} If user couldn't be created */ - public create(userEntity: User): Promise { + public create(userEntity: User): Promise { return this.userRepository.create(userEntity); } @@ -31,7 +37,10 @@ export default class UsersService extends BaseService { * @description : Modify a user * @throws {Error} If user modification failed */ - public update(uid: string, userEntity: User): Promise { + public update(uid: string, userEntity: User): Promise { return this.userRepository.update(uid, userEntity); }