feat(goals): add goals.controller
This commit is contained in:
parent
160daab7c9
commit
90c4932227
1 changed files with 42 additions and 0 deletions
42
src/goals/goals.controller.ts
Normal file
42
src/goals/goals.controller.ts
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
import { BadRequestException, Body, Controller, Delete, Get, Param, ParseUUIDPipe, Patch, Post, Query } from '@nestjs/common';
|
||||||
|
import { CurrentSession } from '../auth/session.decorator';
|
||||||
|
import type { AuthenticatedSession } from '../auth/tenant.guard';
|
||||||
|
import { CreateGoalDto, GOAL_STATUSES, UpdateGoalDto, type GoalStatusValue } from './dto';
|
||||||
|
import { GoalsService } from './goals.service';
|
||||||
|
|
||||||
|
@Controller('goals')
|
||||||
|
export class GoalsController {
|
||||||
|
constructor(private readonly goalsService: GoalsService) {}
|
||||||
|
|
||||||
|
@Get()
|
||||||
|
list(@CurrentSession() session: AuthenticatedSession, @Query('status') status?: string) {
|
||||||
|
if (status && !GOAL_STATUSES.includes(status as GoalStatusValue)) {
|
||||||
|
throw new BadRequestException(`status must be one of: ${GOAL_STATUSES.join(', ')}`);
|
||||||
|
}
|
||||||
|
return this.goalsService.list(session, status as GoalStatusValue | undefined);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Get(':id')
|
||||||
|
getById(@CurrentSession() session: AuthenticatedSession, @Param('id', ParseUUIDPipe) id: string) {
|
||||||
|
return this.goalsService.getById(session, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Post()
|
||||||
|
create(@CurrentSession() session: AuthenticatedSession, @Body() dto: CreateGoalDto) {
|
||||||
|
return this.goalsService.create(session, dto);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Patch(':id')
|
||||||
|
update(
|
||||||
|
@CurrentSession() session: AuthenticatedSession,
|
||||||
|
@Param('id', ParseUUIDPipe) id: string,
|
||||||
|
@Body() dto: UpdateGoalDto,
|
||||||
|
) {
|
||||||
|
return this.goalsService.update(session, id, dto);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Delete(':id')
|
||||||
|
softDelete(@CurrentSession() session: AuthenticatedSession, @Param('id', ParseUUIDPipe) id: string) {
|
||||||
|
return this.goalsService.softDelete(session, id);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue