1
11import { Body, Controller, HttpCode, Inject, Param, Post, Req, Res } from "@nestjs/common";
12import type { Request, Response } from "express";
13
14import { AiWritingService } from "./ai-writing.service.js";
15import { ZodValidate } from "../../common/pipes/zod-validation.pipe.js";
16import { requireActor } from "../../common/types.js";
17import { AiWritingDto, ApplyWritingDto, type AiWritingInput, type ApplyWritingInput } from "./ai-writing.dto.js";
18
19@Controller()
20export class AiWritingController {
21 constructor(@Inject(AiWritingService) private readonly writing: AiWritingService) {}
22
23
30 @Post("workspaces/:workspaceId/ai/writing")
31 generate(
32 @Param("workspaceId") workspaceId: string,
33 @Body(ZodValidate(AiWritingDto)) body: AiWritingInput,
34 @Req() req: Request,
35 @Res() res: Response
36 ) {
37 return this.writing.generate(workspaceId, requireActor(req), body, req, res);
38 }
39
40
45 @Post("workspaces/:workspaceId/ai/writing/apply")
46 @HttpCode(200)
47 apply(
48 @Param("workspaceId") workspaceId: string,
49 @Body(ZodValidate(ApplyWritingDto)) body: ApplyWritingInput,
50 @Req() req: Request
51 ) {
52 return this.writing.apply(workspaceId, requireActor(req), body, req);
53 }
54}
55