import { env } from '../config/env.js';
import { LocalDriver } from './localDriver.js';
import { S3Driver } from './s3Driver.js';
import type { StorageDriver } from './driver.js';
import { logger } from '../utils/logger.js';

export const storage: StorageDriver = env.STORAGE_DRIVER === 's3' ? new S3Driver() : new LocalDriver();

logger.info(`storage driver: ${storage.name}`);

/** Date-sharded, collision-free object key: 2026/08/<uuid>.<ext> */
export function buildStorageKey(id: string, originalName: string): string {
  const now = new Date();
  const y = now.getUTCFullYear();
  const m = String(now.getUTCMonth() + 1).padStart(2, '0');
  const dot = originalName.lastIndexOf('.');
  const ext = dot > -1 ? originalName.slice(dot + 1).toLowerCase().replace(/[^a-z0-9]/g, '').slice(0, 8) : '';
  return `${y}/${m}/${id}${ext ? '.' + ext : ''}`;
}

export type { StorageDriver } from './driver.js';
