/**
 * OSS 环境工具函数
 *
 * 根据当前运行环境自动添加 OSS 路径前缀（dev/test/prod），
 * 不同环境的文件存储在不同目录下，互不干扰。
 */

/** 环境前缀映射 */
const OSS_ENV_PREFIX_MAP: Record<string, string> = {
  development: "dev",
  test: "test",
  production: "prod",
};

/**
 * 获取 OSS 环境前缀
 * @returns 环境前缀（dev/test/prod）
 */
export function getOssEnvPrefix(): string {
  const env = import.meta.env.MODE || "development";
  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}`;
}
