-- --------------------------------------------------------
-- 文件上传记录表
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `tb_sys_file` (
    `id` VARCHAR(50) NOT NULL COMMENT '主键ID',
    `file_id` VARCHAR(64) NOT NULL COMMENT '文件ID',
    `file_name` VARCHAR(255) NOT NULL COMMENT '存储文件名（UUID生成）',
    `original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名',
    `file_path` VARCHAR(500) NOT NULL COMMENT '文件存储路径',
    `file_url` VARCHAR(500) DEFAULT NULL COMMENT '文件访问URL',
    `file_size` BIGINT NOT NULL COMMENT '文件大小（字节）',
    `file_type` VARCHAR(50) DEFAULT NULL COMMENT '文件类型（如：image、document、video等）',
    `mime_type` VARCHAR(100) DEFAULT NULL COMMENT 'MIME类型（如：image/jpeg）',
    `storage_type` VARCHAR(20) NOT NULL DEFAULT 'local' COMMENT '存储类型（local-本地存储、minio-MinIO存储、oss-阿里云OSS等）',
    `module` VARCHAR(50) DEFAULT NULL COMMENT '所属模块（如：user、news、course等）',
    `business_id` VARCHAR(64) DEFAULT NULL COMMENT '业务ID（关联的业务数据ID）',
    `uploader` VARCHAR(64) DEFAULT NULL COMMENT '上传者用户ID',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
    `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除（0-否，1-是）',
    PRIMARY KEY (`id`),
    INDEX `idx_file_id` (`file_id`),
    INDEX `idx_file_name` (`file_name`),
    INDEX `idx_uploader` (`uploader`),
    INDEX `idx_module_business` (`module`, `business_id`),
    INDEX `idx_storage_type` (`storage_type`),
    INDEX `idx_deleted` (`deleted`),
    INDEX `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件上传记录表';

