import { Body, Controller, Get, Post, Query, UseGuards } from "@nestjs/common"; import { ApiBearerAuth, ApiTags } from "@nestjs/swagger"; import { RequirePermissions } from "../admin/decorators/require-permissions.decorator"; import { AdminJwtAuthGuard } from "../admin/guards/admin-jwt-auth.guard"; import { PermissionsGuard } from "../admin/guards/permissions.guard"; import { CreateCoverDto } from "./dto/create-cover.dto"; import { CreateUploadJobDto } from "./dto/create-upload-job.dto"; import { MediaService } from "./media.service"; @ApiTags("Media") @Controller("/api/admin/v1/media") @ApiBearerAuth() @UseGuards(AdminJwtAuthGuard, PermissionsGuard) export class MediaController { constructor(private readonly mediaService: MediaService) {} @Post("/covers") @RequirePermissions("media:create") createCover(@Body() dto: CreateCoverDto) { return this.mediaService.createCover(dto); } @Post("/upload-jobs") @RequirePermissions("media:create") createUploadJob(@Body() dto: CreateUploadJobDto) { return this.mediaService.createUploadJob(dto); } @Get("/upload-jobs") @RequirePermissions("media:read") listUploadJobs( @Query("page") page?: string, @Query("pageSize") pageSize?: string, ) { return this.mediaService.listUploadJobs({ page: Number(page) || 1, pageSize: Number(pageSize) || 20, }); } }