import { InvestmentReadQueryDto } from '../../investment-resource.dto'; import { Controller, Get, Param, Req, Query, UseGuards } from '@nestjs/common'; import { ApiBearerAuth, ApiOkResponse, ApiTags } from '@nestjs/swagger'; import type { Request } from 'express'; import { ApiProblemResponses } from '../../../../common/decorators/api-safe-error-response.decorator'; import { AccessPayload, JwtAuthGuard } from '../../../auth/auth.api'; import { PortfolioResourceDto } from './portfolio.dto'; import { PortfolioService } from '../application/portfolio.service'; @ApiTags('brokerage-accounts') @ApiProblemResponses() @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Controller('brokerage-accounts') export class PortfolioController { constructor(private readonly portfolio: PortfolioService) {} @Get('all/portfolio') @ApiOkResponse({ type: PortfolioResourceDto }) all( @Req() request: Request & { user: AccessPayload }, @Query() query: InvestmentReadQueryDto, ) { return this.portfolio.read( request.user.sub, 'all', query.sync === 'observe', ); } @Get(':accountId/portfolio') @ApiOkResponse({ type: PortfolioResourceDto }) get( @Req() request: Request & { user: AccessPayload }, @Param('accountId') accountId: string, @Query() query: InvestmentReadQueryDto, ) { return this.portfolio.read( request.user.sub, accountId, query.sync === 'observe', ); } }