/**
 * 权限相关类型定义
 */

/**
 * 权限类型
 */
export type PermissionType = 'menu' | 'button' | 'api'

/**
 * 权限状态
 * - 0: 禁用
 * - 1: 启用
 */
export type PermissionStatus = 0 | 1

/**
 * 权限类型文本映射
 */
export const PermissionTypeText: Record<PermissionType, string> = {
  menu: '菜单',
  button: '按钮',
  api: '接口',
}

/**
 * 权限类型颜色映射（Ant Design Tag 颜色）
 */
export const PermissionTypeColor: Record<PermissionType, string> = {
  menu: 'blue',
  button: 'green',
  api: 'orange',
}

/**
 * 权限状态文本映射
 */
export const PermissionStatusText: Record<PermissionStatus, string> = {
  0: '已禁用',
  1: '已启用',
}

/**
 * 权限状态颜色映射（Ant Design Tag 颜色）
 */
export const PermissionStatusColor: Record<PermissionStatus, string> = {
  0: 'default',
  1: 'success',
}

/**
 * 权限信息
 */
export interface Permission {
  /** 权限 ID */
  id: number
  /** 权限名称 */
  name: string
  /** 权限代码 */
  code: string
  /** 权限类型 */
  type: PermissionType
  /** 父级 ID */
  parent_id: number | null
  /** 路由路径 */
  path?: string
  /** 图标 */
  icon?: string
  /** 排序 */
  sort: number
  /** 状态：0-禁用，1-启用 */
  status: PermissionStatus
  /** 子权限 */
  children?: Permission[]
}

/**
 * 创建权限请求
 */
export interface CreatePermissionRequest {
  /** 权限名称 */
  name: string
  /** 权限代码 */
  code: string
  /** 权限类型 */
  type: PermissionType
  /** 父级 ID */
  parent_id?: number | null
  /** 路由路径 */
  path?: string
  /** 图标 */
  icon?: string
  /** 排序 */
  sort?: number
}

/**
 * 更新权限请求
 */
export interface UpdatePermissionRequest {
  /** 权限名称 */
  name?: string
  /** 路由路径 */
  path?: string
  /** 图标 */
  icon?: string
  /** 排序 */
  sort?: number
}

/**
 * 更新权限状态请求
 */
export interface UpdatePermissionStatusRequest {
  /** 状态 */
  status: PermissionStatus
}

/**
 * 权限树节点（用于 Tree 组件）
 */
export interface PermissionTreeNode {
  key: string
  title: string
  children?: PermissionTreeNode[]
}
