From 9e4e44ee6a672262018850c39a5926fbd6be8d89 Mon Sep 17 00:00:00 2001 From: ghost2023 Date: Wed, 3 Jun 2026 11:52:05 +0300 Subject: [PATCH] feat(file-upload-settings): Add API endpoint and logic to retrieve settings by entity --- .../file-upload-settings.controller.ts | 6 ++++++ .../file-upload-settings.repository.ts | 9 +++++++++ .../file-upload-settings/file-upload-settings.service.ts | 4 ++++ .../file-upload-settings.repository.interface.ts | 1 + 4 files changed, 20 insertions(+) diff --git a/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.controller.ts b/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.controller.ts index 3613d9444..ecdecffc3 100644 --- a/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.controller.ts +++ b/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.controller.ts @@ -42,6 +42,12 @@ export class FileUploadSettingsController { return this.service.getByCode(code); } + @Get("by-entity/:entity") + @ApiOperation({ summary: "Get all file upload settings for an entity type (customer, booking, etc.)" }) + getByEntity(@Param("entity") entity: string) { + return this.service.getByEntity(entity); + } + @Post() @ApiOperation({ summary: "Create a new file upload setting" }) create(@Body() dto: CreateFileUploadSettingDto) { diff --git a/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.repository.ts b/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.repository.ts index 558a7bb74..c14b30052 100644 --- a/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.repository.ts +++ b/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.repository.ts @@ -21,6 +21,15 @@ export class FileUploadSettingsRepository super(repository); } + /** Look up all settings for a given entity (e.g. "customer", "booking"). */ + findByEntity(entity: string): Promise { + return this.repository.find({ + where: { entity }, + order: { label: "ASC" }, + relations: { fields: true }, + }); + } + /** Look up a setting by its stable code. */ findByCode(code: string): Promise { return this.repository.findOne({ diff --git a/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.service.ts b/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.service.ts index 8ae5395d7..947bb5ffb 100644 --- a/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.service.ts +++ b/apps/edr-freight-api/src/modules/file-upload-settings/file-upload-settings.service.ts @@ -33,6 +33,10 @@ export class FileUploadSettingsService { return setting; } + getByEntity(entity: string): Promise { + return this.repository.findByEntity(entity); + } + async getByCode(code: string): Promise { const setting = await this.repository.findByCode(code); if (!setting) throw new NotFoundException(`Setting "${code}" not found`); diff --git a/apps/edr-freight-api/src/modules/file-upload-settings/interfaces/file-upload-settings.repository.interface.ts b/apps/edr-freight-api/src/modules/file-upload-settings/interfaces/file-upload-settings.repository.interface.ts index 7e833de02..a0aa01d06 100644 --- a/apps/edr-freight-api/src/modules/file-upload-settings/interfaces/file-upload-settings.repository.interface.ts +++ b/apps/edr-freight-api/src/modules/file-upload-settings/interfaces/file-upload-settings.repository.interface.ts @@ -13,6 +13,7 @@ export interface IFileUploadSettingsRepository { findAll(): Promise; findById(id: string): Promise; findByCode(code: string): Promise; + findByEntity(entity: string): Promise; create(data: Partial): Promise; update(