From 37647f87dbf40d2392b9a0c5697b91ee064273a4 Mon Sep 17 00:00:00 2001 From: alexeh Date: Tue, 12 Mar 2024 08:10:02 +0300 Subject: [PATCH] eudr dashboard cleanup --- .../big-query-alerts-query.builder.ts | 5 +++ .../modules/eudr-alerts/alerts.repository.ts | 32 +++++-------------- .../dashboard/dashboard-detail.types.ts | 11 +++++++ .../dashboard/eudr-dashboard.service.ts | 3 -- 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/api/src/modules/eudr-alerts/alerts-query-builder/big-query-alerts-query.builder.ts b/api/src/modules/eudr-alerts/alerts-query-builder/big-query-alerts-query.builder.ts index 6372c047e..ff7f12ed0 100644 --- a/api/src/modules/eudr-alerts/alerts-query-builder/big-query-alerts-query.builder.ts +++ b/api/src/modules/eudr-alerts/alerts-query-builder/big-query-alerts-query.builder.ts @@ -34,6 +34,11 @@ export class BigQueryAlertsQueryBuilder { return this; } + orderBy(field: string, order: 'ASC' | 'DESC'): this { + this.queryBuilder.orderBy(field, order); + return this; + } + getQueryBuilder(): SelectQueryBuilder { return this.queryBuilder; } diff --git a/api/src/modules/eudr-alerts/alerts.repository.ts b/api/src/modules/eudr-alerts/alerts.repository.ts index 340d78dc6..8dab19443 100644 --- a/api/src/modules/eudr-alerts/alerts.repository.ts +++ b/api/src/modules/eudr-alerts/alerts.repository.ts @@ -53,8 +53,8 @@ export class AlertsRepository implements IEUDRAlertsRepository { } async getAlerts(dto?: GetEUDRAlertsDto): Promise { - const queryBuilder: SelectQueryBuilder = - this.dataSource.createQueryBuilder(); + const queryBuilder: BigQueryAlertsQueryBuilder = + new BigQueryAlertsQueryBuilder(this.dataSource.createQueryBuilder(), dto); // TODO: Make field selection dynamic queryBuilder.from(this.baseDataset, 'alerts'); queryBuilder.select('alertdate', 'alertDate'); @@ -63,17 +63,17 @@ export class AlertsRepository implements IEUDRAlertsRepository { queryBuilder.addSelect('alertcount', 'alertCount'); queryBuilder.addSelect('georegionid', 'geoRegionId'); queryBuilder.orderBy('alertdate', 'ASC'); - return this.query(queryBuilder, dto); + return this.query(queryBuilder); } async getDates(dto: GetEUDRAlertsDto): Promise { - const queryBuilder: SelectQueryBuilder = - this.dataSource.createQueryBuilder(); + const queryBuilder: BigQueryAlertsQueryBuilder = + new BigQueryAlertsQueryBuilder(this.dataSource.createQueryBuilder(), dto); queryBuilder.from(this.baseDataset, 'alerts'); queryBuilder.select('alertdate', 'alertDate'); queryBuilder.orderBy('alertdate', 'ASC'); queryBuilder.groupBy('alertdate'); - return this.query(queryBuilder, dto); + return this.query(queryBuilder); } async getAlertSummary(dto: any): Promise { @@ -120,13 +120,10 @@ export class AlertsRepository implements IEUDRAlertsRepository { return this.query(mainQueryBuilder); } - private async query( - queryBuilder: SelectQueryBuilder | BigQueryAlertsQueryBuilder, - dto?: GetEUDRAlertsDto, - ): Promise { + private async query(queryBuilder: BigQueryAlertsQueryBuilder): Promise { try { const response: SimpleQueryRowsResponse = await this.bigQueryClient.query( - this.buildQuery(queryBuilder, dto), + queryBuilder.buildQuery(), ); if (!response.length || 'error' in response) { this.logger.error('Error in query', response); @@ -140,17 +137,4 @@ export class AlertsRepository implements IEUDRAlertsRepository { ); } } - - private buildQuery( - queryBuilder: SelectQueryBuilder | BigQueryAlertsQueryBuilder, - dto?: GetEUDRAlertsDto, - ): Query { - if (queryBuilder instanceof BigQueryAlertsQueryBuilder) { - return queryBuilder.buildQuery(); - } - const alertsQueryBuilder: BigQueryAlertsQueryBuilder = - new BigQueryAlertsQueryBuilder(queryBuilder, dto); - - return alertsQueryBuilder.buildQuery(); - } } diff --git a/api/src/modules/eudr-alerts/dashboard/dashboard-detail.types.ts b/api/src/modules/eudr-alerts/dashboard/dashboard-detail.types.ts index 7f17ede5f..55d09e9b3 100644 --- a/api/src/modules/eudr-alerts/dashboard/dashboard-detail.types.ts +++ b/api/src/modules/eudr-alerts/dashboard/dashboard-detail.types.ts @@ -16,11 +16,22 @@ export class EUDRDashBoardDetail { alerts: DashBoardDetailAlerts[]; } +class DashBoardDetailCountry { + @ApiProperty() + name: string; + + @ApiProperty() + isoA3: string; +} + class DashBoardDetailSourcingInformation { @ApiProperty() materialName: string; @ApiProperty() hsCode: string; + + @ApiProperty({ type: () => DashBoardDetailCountry }) + country: DashBoardDetailCountry; @ApiProperty() totalArea: number; @ApiProperty() diff --git a/api/src/modules/eudr-alerts/dashboard/eudr-dashboard.service.ts b/api/src/modules/eudr-alerts/dashboard/eudr-dashboard.service.ts index d0d077a8a..60dfdec58 100644 --- a/api/src/modules/eudr-alerts/dashboard/eudr-dashboard.service.ts +++ b/api/src/modules/eudr-alerts/dashboard/eudr-dashboard.service.ts @@ -1,5 +1,3 @@ -// supress typescript error -// eslint-disable-next-line @typescript-eslint/ban-types import { Inject, Injectable, NotFoundException } from '@nestjs/common'; import { DataSource, EntityManager, SelectQueryBuilder } from 'typeorm'; import { @@ -20,7 +18,6 @@ import { EUDRDashBoardFields, } from 'modules/eudr-alerts/dashboard/dashboard.types'; import { GetEUDRAlertDatesDto } from '../dto/get-alerts.dto'; -import { AdminRegionsService } from '../../admin-regions/admin-regions.service'; import { AlertsOutput } from '../dto/alerts-output.dto'; import { GeoRegion } from 'modules/geo-regions/geo-region.entity';