// 文件关联的目标资源类型（多态关联）
// P1-5 新增 "user_avatar"：用于用户头像上传场景的 targetType 字段对齐
// P2-3 新增 "message"：用于私信附件上传场景的 targetType 字段对齐
// V5-5 新增 "lesson_plan"：用于备课模块附件上传场景的 targetType 字段对齐
export type FileTargetType =
  | "exam"
  | "textbook"
  | "question"
  | "announcement"
  | "homework"
  | "user_avatar"
  | "message"
  | "lesson_plan"

// 文件附件记录（DB 行的 TypeScript 表示）
export interface FileAttachment {
  id: string
  filename: string
  originalName: string
  mimeType: string
  size: number
  storagePath: string
  url: string | null
  uploaderId: string
  targetType: string | null
  targetId: string | null
  createdAt: string
}

// 上传成功后返回给前端的结果
export interface FileUploadResult {
  id: string
  url: string
  filename: string
  originalName: string
  size: number
  mimeType: string
}

// 创建文件附件记录的输入
export interface CreateFileAttachmentInput {
  id: string
  filename: string
  originalName: string
  mimeType: string
  size: number
  storagePath: string
  url: string | null
  uploaderId: string
  targetType?: string | null
  targetId?: string | null
}

// 文件查询参数（管理员页面筛选）
export interface FileAttachmentQueryParams {
  mimeType?: string | null
  search?: string | null
  limit?: number
  offset?: number
}

// 文件统计信息
export interface FileStats {
  totalCount: number
  totalSize: number
  byType: Array<{ mimeType: string; count: number; size: number }>
}

// 批量删除结果
export interface BatchDeleteResult {
  success: boolean
  deletedCount: number
  failedIds: string[]
}
