import { Controller, Get, Post, Put, Delete, Patch, Body, Param, Query, } from '@nestjs/common'; import { PolicyEngineService } from './policy-engine.service'; import { CreatePolicyDto } from './dto/create-policy.dto'; import { UpdatePolicyDto } from './dto/update-policy.dto'; import { PolicyStatus, AudienceType } from './entities/policy.enums'; @Controller('policy-engine') export class PolicyEngineController { constructor(private readonly policyEngineService: PolicyEngineService) { } @Post() async create(@Body() createPolicyDto: CreatePolicyDto) { return this.policyEngineService.create(createPolicyDto); } @Get() async findAll( @Query('page') page: string = '1', @Query('limit') limit: string = '10', @Query('status') status?: PolicyStatus, @Query('audienceType') audienceType?: AudienceType, ) { return this.policyEngineService.findAll( Number(page), Number(limit), status, audienceType, ); } @Get(':id') async findOne(@Param('id') id: string) { return this.policyEngineService.findOne(id); } @Put(':id') async update( @Param('id') id: string, @Body() updatePolicyDto: UpdatePolicyDto, ) { return this.policyEngineService.update(id, updatePolicyDto); } @Patch(':id/status') async updateStatus( @Param('id') id: string, @Body('status') status: PolicyStatus, ) { return this.policyEngineService.updateStatus(id, status); } @Delete(':id') async remove(@Param('id') id: string) { return this.policyEngineService.remove(id); } }