import request from '@/config/axios'
import type { Dayjs } from 'dayjs';

/** App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。信息 */
export interface AppVersions {
          id: number; // 主键，自增版本记录ID。
          appId?: string; // 应用标识（支持多App/多包名场景）；单App可固定为 main。
          platform?: string; // 平台：android 或 ios（用 CHECK 约束限制取值）。
          channel?: string; // 渠道标识：如 official / huawei / xiaomi / testflight 等，用于区分不同分发包。
          versionName?: string; // 展示用版本号（语义版本字符串），如 1.2.3。
          versionCode?: number; // 比较用版本号（整数递增）：Android 对应 versionCode；iOS 建议维护同样的递增值以便比较。
          buildNumber: string; // iOS 可选构建号（例如 CFBundleVersion），通常为字符串；用于追溯构建或与CI编号对齐。
          minSupportedCode?: number; // 最低支持版本号（整数）：客户端 version_code 低于该值必须更新/可拒绝继续使用。
          isForceUpdate?: boolean; // 是否强制更新：当客户端未达到最新版本且此字段为 true，可要求强更（即使 >= min_supported_code）。
          isActive?: boolean; // 是否生效：true 表示该版本记录可用于对外更新检查；false 用于下架/撤回。
          releaseNotes: string; // 更新说明（展示给用户的版本更新内容）。
          downloadUrl: string; // 下载链接：Android 可为 apk 直链/市场 scheme；iOS 通常为 App Store 链接或统一跳转页。
          storeUrl: string; // 应用市场/商店页面链接（可选，若 download_url 已覆盖可不填）。
          metadata?: object; // 扩展元数据（JSON）：如包大小、md5、签名信息、最低系统版本等。
          releasedAt?: string | Dayjs; // 发布时间（对外宣布/上线时间），用于展示与排序。
          createdAt?: string | Dayjs; // 记录创建时间。
          updatedAt?: string | Dayjs; // 记录更新时间（建议配合触发器自动维护）。
  }

// App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。 API
export const AppVersionsApi = {
  // 查询App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。分页
  getAppVersionsPage: async (params: any) => {
    return await request.get({ url: `/keyboard/app-versions/page`, params })
  },

  // 查询App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。详情
  getAppVersions: async (id: number) => {
    return await request.get({ url: `/keyboard/app-versions/get?id=` + id })
  },

  // 新增App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。
  createAppVersions: async (data: AppVersions) => {
    return await request.post({ url: `/keyboard/app-versions/create`, data })
  },

  // 修改App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。
  updateAppVersions: async (data: AppVersions) => {
    return await request.put({ url: `/keyboard/app-versions/update`, data })
  },

  // 删除App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。
  deleteAppVersions: async (id: number) => {
    return await request.delete({ url: `/keyboard/app-versions/delete?id=` + id })
  },

  /** 批量删除App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。 */
  deleteAppVersionsList: async (ids: number[]) => {
    return await request.delete({ url: `/keyboard/app-versions/delete-list?ids=${ids.join(',')}` })
  },

  // 导出App 版本发布与更新检查表：区分 Android/iOS、渠道，支持最低支持版本与强更策略。 Excel
  exportAppVersions: async (params) => {
    return await request.download({ url: `/keyboard/app-versions/export-excel`, params })
  }
}