106
apps/api/src/agent-tasks/agent-tasks.controller.ts
Normal file
106
apps/api/src/agent-tasks/agent-tasks.controller.ts
Normal file
@@ -0,0 +1,106 @@
|
||||
import {
|
||||
Controller,
|
||||
Get,
|
||||
Post,
|
||||
Patch,
|
||||
Delete,
|
||||
Body,
|
||||
Param,
|
||||
Query,
|
||||
UseGuards,
|
||||
} from "@nestjs/common";
|
||||
import { AgentTasksService } from "./agent-tasks.service";
|
||||
import {
|
||||
CreateAgentTaskDto,
|
||||
UpdateAgentTaskDto,
|
||||
QueryAgentTasksDto,
|
||||
} from "./dto";
|
||||
import { AuthGuard } from "../auth/guards/auth.guard";
|
||||
import { WorkspaceGuard, PermissionGuard } from "../common/guards";
|
||||
import { Workspace, Permission, RequirePermission } from "../common/decorators";
|
||||
import { CurrentUser } from "../auth/decorators/current-user.decorator";
|
||||
|
||||
/**
|
||||
* Controller for agent task endpoints
|
||||
* All endpoints require authentication and workspace context
|
||||
*
|
||||
* Guards are applied in order:
|
||||
* 1. AuthGuard - Verifies user authentication
|
||||
* 2. WorkspaceGuard - Validates workspace access and sets RLS context
|
||||
* 3. PermissionGuard - Checks role-based permissions
|
||||
*/
|
||||
@Controller("agent-tasks")
|
||||
@UseGuards(AuthGuard, WorkspaceGuard, PermissionGuard)
|
||||
export class AgentTasksController {
|
||||
constructor(private readonly agentTasksService: AgentTasksService) {}
|
||||
|
||||
/**
|
||||
* POST /api/agent-tasks
|
||||
* Create a new agent task
|
||||
* Requires: MEMBER role or higher
|
||||
*/
|
||||
@Post()
|
||||
@RequirePermission(Permission.WORKSPACE_MEMBER)
|
||||
async create(
|
||||
@Body() createAgentTaskDto: CreateAgentTaskDto,
|
||||
@Workspace() workspaceId: string,
|
||||
@CurrentUser() user: any
|
||||
) {
|
||||
return this.agentTasksService.create(
|
||||
workspaceId,
|
||||
user.id,
|
||||
createAgentTaskDto
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/agent-tasks
|
||||
* Get paginated agent tasks with optional filters
|
||||
* Requires: Any workspace member (including GUEST)
|
||||
*/
|
||||
@Get()
|
||||
@RequirePermission(Permission.WORKSPACE_ANY)
|
||||
async findAll(
|
||||
@Query() query: QueryAgentTasksDto,
|
||||
@Workspace() workspaceId: string
|
||||
) {
|
||||
return this.agentTasksService.findAll({ ...query, workspaceId });
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/agent-tasks/:id
|
||||
* Get a single agent task by ID
|
||||
* Requires: Any workspace member
|
||||
*/
|
||||
@Get(":id")
|
||||
@RequirePermission(Permission.WORKSPACE_ANY)
|
||||
async findOne(@Param("id") id: string, @Workspace() workspaceId: string) {
|
||||
return this.agentTasksService.findOne(id, workspaceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* PATCH /api/agent-tasks/:id
|
||||
* Update an agent task
|
||||
* Requires: MEMBER role or higher
|
||||
*/
|
||||
@Patch(":id")
|
||||
@RequirePermission(Permission.WORKSPACE_MEMBER)
|
||||
async update(
|
||||
@Param("id") id: string,
|
||||
@Body() updateAgentTaskDto: UpdateAgentTaskDto,
|
||||
@Workspace() workspaceId: string
|
||||
) {
|
||||
return this.agentTasksService.update(id, workspaceId, updateAgentTaskDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* DELETE /api/agent-tasks/:id
|
||||
* Delete an agent task
|
||||
* Requires: ADMIN role or higher
|
||||
*/
|
||||
@Delete(":id")
|
||||
@RequirePermission(Permission.WORKSPACE_ADMIN)
|
||||
async remove(@Param("id") id: string, @Workspace() workspaceId: string) {
|
||||
return this.agentTasksService.remove(id, workspaceId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user