1import { Body, Controller, HttpCode, Inject, Param, Post, Put, Req } from "@nestjs/common";
2import type { Request } from "express";
3import { UploadsService } from "./uploads.service.js";
4import { ZodValidate } from "../../common/pipes/zod-validation.pipe.js";
5import { requireActor } from "../../common/types.js";
6import {
7 CancelUploadDto,
8 type CancelUploadInput,
9 CompleteUploadDto,
10 type CompleteUploadInput,
11 CreateUploadDto,
12 type CreateUploadInput,
13} from "./dto.js";
14
15
21@Controller()
22export class UploadsController {
23 constructor(@Inject(UploadsService) private readonly uploads: UploadsService) {}
24
25 @Post("files/uploads")
26 create(@Body(ZodValidate(CreateUploadDto)) body: CreateUploadInput, @Req() req: Request) {
27 return this.uploads.create(requireActor(req), body, req);
28 }
29
30 @Put("files/uploads/:id/complete")
31 complete(
32 @Param("id") id: string,
33 @Body(ZodValidate(CompleteUploadDto)) body: CompleteUploadInput,
34 @Req() req: Request,
35 ) {
36 return this.uploads.complete(id, requireActor(req), body, req);
37 }
38
39
41 @HttpCode(200)
42 @Post("files/uploads/:id/cancel")
43 cancel(
44 @Param("id") id: string,
45 @Body(ZodValidate(CancelUploadDto)) body: CancelUploadInput,
46 @Req() req: Request,
47 ) {
48 return this.uploads.cancel(id, requireActor(req), body, req);
49 }
50}
51