find territories for a point

This commit is contained in:
sbriat
2023-02-06 16:12:40 +01:00
parent a743fefe94
commit 1da111bba9
10 changed files with 37 additions and 10 deletions

View File

@@ -32,7 +32,9 @@ export class TerritoriesController {
@GrpcMethod('TerritoriesService', 'FindForPoint')
@UseInterceptors(CacheInterceptor)
@CacheKey('TerritoriesServiceFindForPoint')
async findAll(data: FindForPointRequest): Promise<ICollection<Territory>> {
async findForPoint(
data: FindForPointRequest,
): Promise<ICollection<Territory>> {
const territoryCollection = await this._queryBus.execute(
new FindForPointQuery(data),
);

View File

@@ -13,6 +13,7 @@ message Point {
message Territories {
repeated Territory data = 1;
int32 total = 2;
}
message Territory {

View File

@@ -0,0 +1,9 @@
export class Point {
lon: number;
lat: number;
constructor(lon: number, lat: number) {
this.lon = lon;
this.lat = lat;
}
}

View File

@@ -3,6 +3,7 @@ import { ICollection } from 'src/modules/database/src/interfaces/collection.inte
import { TerritoriesRepository } from '../../adapters/secondaries/territories.repository';
import { FindForPointQuery } from '../../queries/find-for-point.query';
import { Territory } from '../entities/territory';
import { Point } from '../entities/point';
@QueryHandler(FindForPointQuery)
export class FindForPointUseCase {
@@ -11,9 +12,8 @@ export class FindForPointUseCase {
async execute(
findForPointQuery: FindForPointQuery,
): Promise<ICollection<Territory>> {
return this._repository.findAll(1, 999999, {
lon: findForPointQuery.lon,
lat: findForPointQuery.lat,
});
return this._repository.findForPoint(
new Point(findForPointQuery.point.lon, findForPointQuery.point.lat),
);
}
}

View File

@@ -1,11 +1,10 @@
import { FindForPointRequest } from '../domain/dtos/find-for-point.request';
import { Point } from '../domain/entities/point';
export class FindForPointQuery {
lon: number;
lat: number;
point: Point;
constructor(findForPointRequest?: FindForPointRequest) {
this.lon = findForPointRequest.lon;
this.lat = findForPointRequest.lat;
this.point = new Point(findForPointRequest.lon, findForPointRequest.lat);
}
}

View File

@@ -25,7 +25,7 @@ const mockTerritories = [
const mockTerritoriesRepository = {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
findAll: jest.fn().mockImplementation((query?: FindForPointQuery) => {
findForPoint: jest.fn().mockImplementation((query?: FindForPointQuery) => {
return Promise.resolve(mockTerritories);
}),
};