import { registerAs } from '@nestjs/config';
import { readFileSync } from 'node:fs';

const DEFAULT_STORAGE_QUOTA = 10 * 1024 * 1024;
const DEFAULT_STORAGE_MAX_FILE_SIZE = 1 * 1024 * 1024;

const keysDir = `${__dirname}/../../keys/${
  process.env.NODE_ENV === 'production' ? 'file-prod' : 'file-dev'
}`;

export default registerAs('file', () => ({
  quotaFreeProject: process.env.FILESTORAGE_QUOTA_FREE_PROJECT
    ? parseInt(process.env.FILESTORAGE_QUOTA_FREE_PROJECT)
    : DEFAULT_STORAGE_QUOTA,
  maxSizeFreeProject: process.env.FILESTORAGE_MAX_SIZE_FREE_PROJECT
    ? parseInt(process.env.FILESTORAGE_MAX_SIZE_FREE_PROJECT)
    : DEFAULT_STORAGE_MAX_FILE_SIZE,
  quotaPaidProject: process.env.FILESTORAGE_QUOTA_PAID_PROJECT
    ? parseInt(process.env.FILESTORAGE_QUOTA_PAID_PROJECT)
    : DEFAULT_STORAGE_QUOTA,
  maxSizePaidProject: process.env.FILESTORAGE_MAX_SIZE_PAID_PROJECT
    ? parseInt(process.env.FILESTORAGE_MAX_SIZE_PAID_PROJECT)
    : DEFAULT_STORAGE_MAX_FILE_SIZE,
  quotaAccount: process.env.FILESTORAGE_QUOTA_ACCOUNT
    ? parseInt(process.env.FILESTORAGE_QUOTA_ACCOUNT)
    : DEFAULT_STORAGE_QUOTA,
  maxSizeAccount: process.env.FILESTORAGE_MAX_SIZE_ACCOUNT
    ? parseInt(process.env.FILESTORAGE_MAX_SIZE_ACCOUNT)
    : DEFAULT_STORAGE_MAX_FILE_SIZE,
  publicKey: readFileSync(`${keysDir}/public.key`),
  privateKey: readFileSync(`${keysDir}/private.key`),
}));
