mirror of
https://gitlab.com/mobicoop/v3/service/ad.git
synced 2026-01-10 10:22:40 +00:00
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { Controller, UsePipes } from '@nestjs/common';
|
|
import { QueryBus } from '@nestjs/cqrs';
|
|
import { GrpcMethod, RpcException } from '@nestjs/microservices';
|
|
import { AdEntity } from '@modules/ad/core/domain/ad.entity';
|
|
import { AdMapper } from '@modules/ad/ad.mapper';
|
|
import { RpcExceptionCode } from '@mobicoop/ddd-library';
|
|
import { RpcValidationPipe } from '@mobicoop/ddd-library';
|
|
import { GRPC_SERVICE_NAME } from '@src/app.constants';
|
|
import { FindAdsByIdsRequestDto } from './dtos/find-ads-by-ids.request.dto';
|
|
import { AdsResponseDto } from '../dtos/ads.response.dto';
|
|
import { FindAdsByIdsQuery } from '@modules/ad/core/application/queries/find-ads-by-ids/find-ads-by-ids.query';
|
|
|
|
@UsePipes(
|
|
new RpcValidationPipe({
|
|
whitelist: false,
|
|
forbidUnknownValues: false,
|
|
}),
|
|
)
|
|
@Controller()
|
|
export class FindAdsByIdsGrpcController {
|
|
constructor(
|
|
protected readonly mapper: AdMapper,
|
|
private readonly queryBus: QueryBus,
|
|
) {}
|
|
|
|
@GrpcMethod(GRPC_SERVICE_NAME, 'FindAllByIds')
|
|
async findAllByIds(data: FindAdsByIdsRequestDto): Promise<AdsResponseDto> {
|
|
try {
|
|
const ads: AdEntity[] = await this.queryBus.execute(
|
|
new FindAdsByIdsQuery(data.ids),
|
|
);
|
|
return {
|
|
ads: ads.map((ad: AdEntity) => this.mapper.toResponse(ad)),
|
|
};
|
|
} catch (e) {
|
|
throw new RpcException({
|
|
code: RpcExceptionCode.UNKNOWN,
|
|
message: e.message,
|
|
});
|
|
}
|
|
}
|
|
}
|