import { Request, Response } from 'express';

import { pick } from '@/shared/utils';
import { generatePresignedUrl } from '@/shared/core/R2/R2.service';

export const generateR2PresignedUrl = async (
  req: Request,
  res: Response,
): Promise<void> => {
  const { folderName } = pick(req.params, ['folderName']) as {
    folderName: string;
  };
  const { schema, fileName, subType, contentType } = req.body;
  const userId = req.user?.id;
  const companyId = req.user?.company?.id;

  try {
    const { url, key, id } = await generatePresignedUrl({
      companyId,
      folderName,
      schema,
      fileName,
      subType,
      userId,
      contentType,
    });

    res.json({ url, key, id });
  } catch (err) {
    console.error('Error generating pre-signed URL:', err);
    res.status(500).json({ error: 'Error generating pre-signed URL.' });
  }
};
