diff --git a/src/modules/task-manager/controllers/workspace-type.controller.ts b/src/modules/task-manager/controllers/workspace-type.controller.ts new file mode 100644 index 0000000..1ee357b --- /dev/null +++ b/src/modules/task-manager/controllers/workspace-type.controller.ts @@ -0,0 +1,55 @@ +import { Controller, Get, Post, Patch, Delete, Param, Body } from "@nestjs/common"; +import { ApiTags, ApiOperation, ApiResponse, ApiParam } from "@nestjs/swagger"; +import { WorkspaceTypeService } from "../providers/workspace-type.service"; +import { CreateWorkspaceTypeDto } from "../dto/workspace-type/create-workspace-type.dto"; +import { UpdateWorkspaceTypeDto } from "../dto/workspace-type/update-workspace-type.dto"; +import { TMWorkspaceType } from "../entities/workspace-type.entity"; + +@ApiTags("Task Manager - Workspace Types") +@Controller("task-manager/workspace-types") +export class WorkspaceTypeController { + constructor(private readonly workspaceTypeService: WorkspaceTypeService) {} + + @Get() + @ApiOperation({ summary: "Get all workspace types" }) + @ApiResponse({ status: 200, description: "List of workspace types", type: [TMWorkspaceType] }) + findAll(): Promise { + return this.workspaceTypeService.findAll(); + } + + @Get(":id") + @ApiOperation({ summary: "Get a workspace type by ID" }) + @ApiParam({ name: "id", description: "WorkspaceType ID" }) + @ApiResponse({ status: 200, description: "WorkspaceType found", type: TMWorkspaceType }) + @ApiResponse({ status: 404, description: "WorkspaceType not found" }) + findOne(@Param("id") id: string): Promise { + return this.workspaceTypeService.findOne(id); + } + + @Post() + @ApiOperation({ summary: "Create a new workspace type" }) + @ApiResponse({ status: 201, description: "WorkspaceType created", type: TMWorkspaceType }) + @ApiResponse({ status: 409, description: "WorkspaceType with this name already exists" }) + create(@Body() body: CreateWorkspaceTypeDto): Promise { + return this.workspaceTypeService.create(body); + } + + @Patch(":id") + @ApiOperation({ summary: "Update a workspace type" }) + @ApiParam({ name: "id", description: "WorkspaceType ID" }) + @ApiResponse({ status: 200, description: "WorkspaceType updated", type: TMWorkspaceType }) + @ApiResponse({ status: 404, description: "WorkspaceType not found" }) + @ApiResponse({ status: 409, description: "WorkspaceType with this name already exists" }) + update(@Param("id") id: string, @Body() body: UpdateWorkspaceTypeDto): Promise { + return this.workspaceTypeService.update(id, body); + } + + @Delete(":id") + @ApiOperation({ summary: "Delete a workspace type" }) + @ApiParam({ name: "id", description: "WorkspaceType ID" }) + @ApiResponse({ status: 200, description: "WorkspaceType deleted" }) + @ApiResponse({ status: 404, description: "WorkspaceType not found" }) + remove(@Param("id") id: string): Promise { + return this.workspaceTypeService.remove(id); + } +}