/**
 * @description 文件相关类型定义
 * @author yslg
 * @since 2025-10-16
 */

import { BaseDTO } from '../base';

/**
 * 系统文件
 */
export interface SysFile extends BaseDTO {
  /** 文件ID */
  fileID?: string;
  /** 文件名 */
  fileName?: string;
  /** 原始文件名 */
  originalName?: string;
  /** 文件路径 */
  filePath?: string;
  /** 访问URL */
  fileUrl?: string;
  /** 文件大小（字节） */
  fileSize?: number;
  /** 文件类型 */
  fileType?: string;
  /** MIME类型 */
  mimeType?: string;
  /** 存储类型（local-本地存储、minio-MinIO存储、oss-阿里云OSS等） */
  storageType?: string;
  /** 所属模块 */
  module?: string;
  /** 业务ID */
  businessID?: string;
  /** 上传者 */
  uploader?: string;
}

/**
 * 文件上传参数
 */
export interface FileUploadParam {
  /** 文件对象 */
  file: File;
  /** 所属模块 */
  module?: string;
  /** 业务ID */
  businessId?: string;
  /** 上传者用户ID */
  uploader?: string;
}

/**
 * 批量文件上传参数
 */
export interface BatchFileUploadParam {
  /** 文件对象数组 */
  files: File[];
  /** 所属模块 */
  module?: string;
  /** 业务ID */
  businessId?: string;
  /** 上传者用户ID */
  uploader?: string;
}

/**
 * 文件查询参数
 */
export interface FileQueryParam {
  /** 所属模块 */
  module?: string;
  /** 业务ID */
  businessId?: string;
  /** 上传者 */
  uploader?: string;
  /** 文件类型 */
  fileType?: string;
  /** 存储类型 */
  storageType?: string;
}

/**
 * 存储类型枚举
 */
export enum StorageType {
  /** 本地存储 */
  LOCAL = 'local',
  /** MinIO存储 */
  MINIO = 'minio',
  /** 阿里云OSS */
  OSS = 'oss'
}

