import { Body, Controller, Delete, Get, Param, Post, Put, UseGuards } from '@nestjs/common'; import { RulesService } from './rules.service'; import { JwtAuthGuard } from '../auth/jwt-auth.guard'; import { RolesGuard } from '../auth/roles.guard'; import { Roles } from '../auth/roles.decorator'; import { CurrentTenantContext } from '../auth/current-tenant.decorator'; import { TenantContext } from '../../common/tenant-context'; import { CreateRuleRequest, UpdateRuleRequest } from '@tower/types'; @Controller('admin/rules') @UseGuards(JwtAuthGuard, RolesGuard) @Roles('OWNER', 'ADMIN') export class RulesController { constructor(private readonly rulesService: RulesService) {} @Get() list(@CurrentTenantContext() ctx: TenantContext) { return this.rulesService.list(ctx.tenantId); } @Post() create( @CurrentTenantContext() ctx: TenantContext, @Body() body: CreateRuleRequest, ) { return this.rulesService.create(ctx.tenantId, body); } @Put(':id') update( @CurrentTenantContext() ctx: TenantContext, @Param('id') id: string, @Body() body: UpdateRuleRequest, ) { return this.rulesService.update(ctx.tenantId, id, body); } @Delete(':id') remove( @CurrentTenantContext() ctx: TenantContext, @Param('id') id: string, ) { return this.rulesService.remove(ctx.tenantId, id); } }