/**
 * 基础设施、部署和用户相关数据源
 * 包含：基础设施（Docker、Git、K8s、Jenkins）、部署相关（环境、项目组、应用）、通知渠道、用户相关（用户、角色、部门）
 */
import type { DataSourceConfig } from '../types';

/**
 * Docker 镜像仓库数据源
 */
export const dockerRegistriesConfig: DataSourceConfig = {
  url: '/api/v1/docker-registry/list',
  params: { enabled: true },
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: item.name,
      value: item.id,
      url: item.url
    }));
  }
};

/**
 * Git 仓库数据源
 */
export const gitRepositoriesConfig: DataSourceConfig = {
  url: '/api/v1/git-repo/list',
  params: { enabled: true },
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: `${item.name} (${item.url})`,
      value: item.id,
      url: item.url
    }));
  }
};

/**
 * Kubernetes 集群数据源
 */
export const k8sClustersConfig: DataSourceConfig = {
  url: '/api/v1/k8s-cluster/list',
  params: { enabled: true },
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: item.name,
      value: item.id,
      apiServer: item.apiServer
    }));
  }
};

/**
 * Jenkins 服务器数据源
 */
export const jenkinsServersConfig: DataSourceConfig = {
  url: '/api/v1/external-system/list',
  params: { type: 'JENKINS', enabled: true },
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: `${item.name} (${item.url})`,
      value: item.id,
      url: item.url,
      name: item.name
    }));
  }
};

/**
 * 环境列表数据源
 */
export const environmentsConfig: DataSourceConfig = {
  url: '/api/v1/environments/list',
  params: { enabled: true },
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: item.name,
      value: item.id,
      code: item.code,
      type: item.type,
      description: item.description
    }));
  }
};

/**
 * 项目组列表数据源
 */
export const projectGroupsConfig: DataSourceConfig = {
  url: '/api/v1/project-groups/list',
  params: { enabled: true },
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: item.name,
      value: item.id,
      code: item.code,
      description: item.description
    }));
  }
};

/**
 * 应用列表数据源
 */
export const applicationsConfig: DataSourceConfig = {
  url: '/api/v1/applications/list',
  params: { enabled: true },
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: item.appName,  // ✅ 修正：使用 appName
      value: item.appCode,
      code: item.appCode,   // ✅ 修正：使用 appCode
      projectGroupId: item.projectGroupId,
      description: item.appDesc || item.description  // ✅ 修正：使用 appDesc
    }));
  }
};

/**
 * 通知渠道类型数据源
 */
export const notificationChannelTypesConfig: DataSourceConfig = {
  url: '/api/v1/notification-channel/types',
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: `${item.label}`,
      value: item.code
    }));
  }
};

/**
 * 通知渠道数据源
 */
export const notificationChannelsConfig: DataSourceConfig = {
  url: '/api/v1/notification-channel/list',
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: `(${item.channelType})-${item.name}`,
      value: item.id
    }));
  }
};

/**
 * 用户数据源
 */
export const usersConfig: DataSourceConfig = {
  url: '/api/v1/user/list',
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: `${item.nickname} (${item.username})`,
      value: item.username,  // 后台使用 username 进行审批
      id: item.id,
      email: item.email,
      departmentName: item.departmentName
    }));
  }
};

/**
 * 角色数据源
 */
export const rolesConfig: DataSourceConfig = {
  url: '/api/v1/role/list',
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: `${item.name} (${item.code})`,
      value: item.code,  // 使用 code 作为值
      id: item.id,
      description: item.description
    }));
  }
};

/**
 * 部门数据源
 */
export const departmentsConfig: DataSourceConfig = {
  url: '/api/v1/department/list',
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: `${item.name} (${item.code})`,
      value: item.code,  // 使用 code 作为值
      id: item.id,
      description: item.description,
      parentId: item.parentId
    }));
  }
};

/**
 * 通知模板数据源
 */
export const notificationTemplatesConfig: DataSourceConfig = {
  url: '/api/v1/notification-template/list',
  transform: (data: any[]) => {
    return data.map((item: any) => ({
      label: `(${item.channelType})-${item.name}`,
      value: item.id
    }));
  }
};

