import { Controller, Get, Delete, Query, HttpCode, HttpStatus, } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiQuery } from '@nestjs/swagger'; import { SupabaseStorageService } from './supabase-storage.service'; import { FileType } from './enums/file-type.enum'; import { LogToDiscord } from 'src/shared/decorators/log-to-discord.decorator'; @ApiTags('Upload: Supabase Storage') @Controller('supabase') @LogToDiscord() export class SupabaseStorageController { constructor( private readonly supabaseStorageService: SupabaseStorageService, ) {} @Get('presigned-upload') @ApiOperation({ summary: 'Get presigned upload URL' }) @ApiQuery({ name: 'fileName', required: true }) @ApiQuery({ name: 'fileType', enum: FileType, required: false }) async getPresignedUploadUrl( @Query('fileName') fileName: string, @Query('fileType') fileType?: FileType, ) { return this.supabaseStorageService.getPresignedUploadUrl( fileName, fileType, ); } @Delete('by-url') @HttpCode(HttpStatus.OK) @ApiOperation({ summary: 'Delete file by URL' }) async deleteFileByUrl(@Query('url') url: string) { const result = await this.supabaseStorageService.deleteFileByUrl(url); return { message: 'File deleted successfully', ...result, }; } }