import { Body, Controller, Get, Headers, Inject, Param, Post, Query } from '@nestjs/common'; import { ok } from '../common/api-response.js'; import { actorFromHeaders } from '../common/auth-context.js'; import { GoalsService, type GoalProjectCreateInput, type GoalStartInput } from './goals.service.js'; @Controller('api/v1/goals') export class GoalsController { constructor(@Inject(GoalsService) private readonly service: GoalsService) {} @Post() async start(@Body() body: GoalStartInput, @Headers() headers: Record) { return ok(await this.service.start(body, actorFromHeaders(headers))); } @Get('projects') projects(@Headers() headers: Record) { return ok(this.service.projects(actorFromHeaders(headers))); } @Post('projects') createProject(@Body() body: GoalProjectCreateInput, @Headers() headers: Record) { return ok(this.service.createProject(body, actorFromHeaders(headers))); } @Get() list(@Headers() headers: Record, @Query('limit') limit?: string) { return ok(this.service.list(actorFromHeaders(headers), Number(limit) || 20)); } @Post(':id/apply') apply(@Param('id') id: string, @Headers() headers: Record) { return ok(this.service.apply(id, actorFromHeaders(headers))); } @Get(':id') get(@Param('id') id: string, @Headers() headers: Record) { return ok(this.service.get(id, actorFromHeaders(headers))); } }