import { memoryStorage } from "multer"
import { MulterOptions } from "@nestjs/platform-express/multer/interfaces/multer-options.interface"
import { BadRequestException } from "@nestjs/common"
import { code } from "../response/response.code"
import { validationMessage } from "../../utils/helpers"
import { messageKey } from "../../constants/message-keys"

/**
 * Multer configuration for episode log PDF documents
 * Uses memory storage since files will be uploaded directly to Cloudflare R2
 */
export const episodeLogDocumentConfig: MulterOptions = {
  storage: memoryStorage(),
  limits: {
    fileSize: 20 * 1024 * 1024, // 20 MB max file size
  },
  fileFilter: (req, file, cb) => {
    // Only allow PDF files
    if (!file.originalname.match(/\.(pdf)$/i)) {
      return cb(
        new BadRequestException({
          statusCode: code.VALIDATION,
          message: validationMessage(messageKey.invalid_file_type, {
            file_types: "pdf",
          }),
        }),
        false,
      )
    }
    cb(null, true)
  },
}
