import { Controller, Get, Post, Body, Patch, Param, Delete, Query, } from '@nestjs/common'; import { FormService } from './form.service'; import { ApiOperation } from '@nestjs/swagger'; import { UpdateFieldDto } from './dto/update-field.dto'; import { QueryFormDto } from './dto/query-form.dto'; import { CreateFormDto } from './dto/create-form.dto'; @Controller('form') export class FormController { constructor(private readonly formService: FormService) {} @Post('create-form') @ApiOperation({ summary: 'Create a Form'}) async createOne(@Body() createFormDto:CreateFormDto){ return await this.formService.createForm(createFormDto) } @Get() @ApiOperation({ summary: 'Get all forms with pagination, search, sort' }) findAll(@Query() query: QueryFormDto) { return this.formService.findAll(query); } @Get(':formId') @ApiOperation({ summary: 'Find a form' }) async find(@Param('formId') formId: string) { return await this.formService.find(formId); } @Get(':formId/interface') @ApiOperation({summary:'Get interface for the form provided by llm'}) async getInterface(@Param('formId') formId:string){ return await this.formService.findInterface(formId); } @Patch(':id/fields/:fieldId') @ApiOperation({ summary: 'update a field in a form' }) async updateField( @Param('id') id: string, @Param('fieldId') fieldId: string, @Body() updateFieldDto: UpdateFieldDto, ) { return await this.formService.updateField(id, fieldId, updateFieldDto); } @Delete(':id/fields/:fieldId') @ApiOperation({ summary: 'Delete a field' }) async deleteField( @Param('id') id: string, @Param('fieldId') fieldId: string, ) { return await this.formService.deleteField(id, fieldId); } @Delete(':id') @ApiOperation({ summary: 'Soft delete a form' }) async softDelete(@Param('id') id: string) { return await this.formService.softDelete(id); } @Patch(':id/restore') @ApiOperation({ summary: 'Restore a soft deleted form' }) restore(@Param('id') id: string) { return this.formService.restore(id); } }