import { Body, Controller, Get, Param, ParseUUIDPipe, Patch, Post } from '@nestjs/common'; import { AuthUser, CurrentUser, RequirePermissions } from '../../common/auth'; import { SitesService } from './sites.service'; @Controller('sites') export class SitesController { constructor(private readonly sites: SitesService) {} @RequirePermissions('sites.view') @Get() list(@CurrentUser() user: AuthUser) { return this.sites.list(user); } @RequirePermissions('sites.view') @Get(':id') get(@CurrentUser() user: AuthUser, @Param('id', ParseUUIDPipe) id: string) { return this.sites.get(user, id); } @RequirePermissions('sites.manage') @Post() create(@CurrentUser() user: AuthUser, @Body() body: unknown) { return this.sites.create(user, body); } @RequirePermissions('sites.manage') @Patch(':id') update(@CurrentUser() user: AuthUser, @Param('id', ParseUUIDPipe) id: string, @Body() body: unknown) { return this.sites.update(user, id, body); } @RequirePermissions('sites.manage') @Post(':id/archive') archive(@CurrentUser() user: AuthUser, @Param('id', ParseUUIDPipe) id: string) { return this.sites.archive(user, id); } }