Add authenticated all-account portfolio, operations, income and event endpoints. Preserve source accounts, exact currency totals and scoped cursor pagination.
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
import { Controller, Get, Param, Query, Req, UseGuards } from '@nestjs/common';
|
|
import { ApiBearerAuth, ApiOkResponse, ApiTags } from '@nestjs/swagger';
|
|
import type { Request } from 'express';
|
|
import { AccessPayload } from '../auth/auth.types';
|
|
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
|
|
import { ApiProblemResponses } from '../common/decorators/api-safe-error-response.decorator';
|
|
import {
|
|
BrokerageOperationsPageDto,
|
|
BrokerageOperationsQueryDto,
|
|
} from './brokerage-operation.dto';
|
|
import { BrokerageOperationsService } from './brokerage-operations.service';
|
|
|
|
@ApiTags('brokerage-accounts')
|
|
@ApiProblemResponses()
|
|
@ApiBearerAuth()
|
|
@UseGuards(JwtAuthGuard)
|
|
@Controller('brokerage-accounts')
|
|
export class BrokerageOperationsController {
|
|
constructor(private readonly operations: BrokerageOperationsService) {}
|
|
|
|
@Get('all/operations')
|
|
@ApiOkResponse({ type: BrokerageOperationsPageDto })
|
|
all(
|
|
@Req() request: Request & { user: AccessPayload },
|
|
@Query() query: BrokerageOperationsQueryDto,
|
|
) {
|
|
return this.operations.getAll(request.user.sub, query);
|
|
}
|
|
|
|
@Get(':accountId/operations')
|
|
@ApiOkResponse({ type: BrokerageOperationsPageDto })
|
|
get(
|
|
@Req() request: Request & { user: AccessPayload },
|
|
@Param('accountId') accountId: string,
|
|
@Query() query: BrokerageOperationsQueryDto,
|
|
) {
|
|
return this.operations.get(request.user.sub, accountId, query);
|
|
}
|
|
}
|