import type { Request } from 'express'; import { Controller, Get, Param, Query, Req, UseGuards } from '@nestjs/common'; import { ApiBearerAuth, ApiOkResponse, ApiTags } from '@nestjs/swagger'; import { ApiProblemResponses } from '#src/common/decorators/api-safe-error-response.decorator'; import { AccessPayload, JwtAuthGuard } from '#src/modules/auth/auth.api'; import { BrokerageOperationsService } from '../application/brokerage-operations.service'; import { BrokerageOperationsQueryDto, BrokerageOperationsResourceDto, } from './brokerage-operation.dto'; @ApiTags('brokerage-accounts') @ApiProblemResponses() @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Controller('brokerage-accounts') export class BrokerageOperationsController { constructor(private readonly operations: BrokerageOperationsService) {} @Get('all/operations') @ApiOkResponse({ type: BrokerageOperationsResourceDto }) all( @Req() request: Request & { user: AccessPayload }, @Query() query: BrokerageOperationsQueryDto, ) { return this.operations.read(request.user.sub, 'all', query); } @Get(':accountId/operations') @ApiOkResponse({ type: BrokerageOperationsResourceDto }) get( @Req() request: Request & { user: AccessPayload }, @Param('accountId') accountId: string, @Query() query: BrokerageOperationsQueryDto, ) { return this.operations.read(request.user.sub, accountId, query); } }