/**
 * 环境工具函数
 *
 * 提供环境相关的配置，用于自动为 OSS 路径添加环境前缀（dev/test/prod）。
 * 这样不同环境的文件会存储在不同的目录下，互不干扰。
 */

/**
 * OSS 环境前缀映射
 *
 * 根据你的项目环境变量名修改此映射。
 * Vite 默认使用 import.meta.env.MODE，值通常为 development / test / production。
 */
const OSS_ENV_PREFIX_MAP: Record<string, string> = {
  development: "dev",
  test: "test",
  production: "prod",
};

/**
 * 获取当前 Vite 环境
 */
export function getViteEnv(): string {
  return import.meta.env.MODE || "development";
}

/**
 * 获取 OSS 环境前缀
 *
 * @returns OSS 环境前缀（dev/test/prod）
 */
export function getOssEnvPrefix(): string {
  const env = getViteEnv();
  return OSS_ENV_PREFIX_MAP[env] || "dev";
}

/**
 * 构建完整的 OSS 目录路径
 *
 * @param bizDir 业务目录（如：avatar, course/cover）
 * @returns 完整目录路径（如：dev/avatar, test/course/cover）
 *
 * @example
 * buildOssDirPath("avatar")        // 开发环境 → "dev/avatar"
 * buildOssDirPath("course/cover")  // 测试环境 → "test/course/cover"
 * buildOssDirPath()                // 生产环境 → "prod"
 */
export function buildOssDirPath(bizDir?: string): string {
  const envPrefix = getOssEnvPrefix();

  if (!bizDir) {
    return envPrefix;
  }

  // 移除 bizDir 开头可能存在的环境前缀，避免重复
  const cleanBizDir = bizDir.replace(/^(dev|test|prod)\//, "");

  return `${envPrefix}/${cleanBizDir}`;
}
