-- =============================================
-- 文件分片上传会话表 - 完整建表语句
-- =============================================

DROP TABLE IF EXISTS `sys_file_upload_session`;

CREATE TABLE `sys_file_upload_session` (
    `session_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '会话ID',
    `upload_id` VARCHAR(64) NOT NULL COMMENT '上传ID（唯一标识）',
    `file_id` BIGINT(20) DEFAULT NULL COMMENT '文件ID（关联sys_file_info表）',
    `file_name` VARCHAR(255) NOT NULL COMMENT '原始文件名',
    `file_size` BIGINT(20) NOT NULL COMMENT '文件总大小（字节）',
    `file_signature` VARCHAR(32) DEFAULT NULL COMMENT '文件签名（用于秒传校验，可能是完整MD5或采样点哈希）',
    `chunk_size` BIGINT(20) NOT NULL COMMENT '分片大小（字节）',
    `total_chunks` INT(11) NOT NULL COMMENT '总分片数',
    `uploaded_chunks` INT(11) NOT NULL DEFAULT '0' COMMENT '已上传分片数',
    `upload_type` VARCHAR(32) DEFAULT NULL COMMENT '上传类型（cms/dms/resource/pms等）',
    `hierarchy` VARCHAR(255) DEFAULT NULL COMMENT '层级路径',
    `status` VARCHAR(16) NOT NULL DEFAULT 'INIT' COMMENT '状态：INIT-初始化，UPLOADING-上传中，COMPLETED-已完成，FAILED-失败',
    `temp_file_path` VARCHAR(500) DEFAULT NULL COMMENT '临时文件存储路径',
    `error_message` VARCHAR(500) DEFAULT NULL COMMENT '错误信息',
    `hash_type` VARCHAR(16) DEFAULT 'FULL' COMMENT '哈希类型：FULL=完整文件MD5, SAMPLE=采样点哈希',
    `sample_chunks` VARCHAR(256) DEFAULT NULL COMMENT '采样点分片序号列表，逗号分隔：0,200,400,600,999（仅SAMPLE类型）',
    `create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
    `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
    `expire_time` DATETIME NOT NULL COMMENT '过期时间（24小时）',
    PRIMARY KEY (`session_id`),
    UNIQUE KEY `uk_upload_id` (`upload_id`),
    KEY `idx_file_hash_type` (`file_signature`, `hash_type`, `status`),
    KEY `idx_status_expire` (`status`, `expire_time`),
    KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件分片上传会话表';

-- =============================================
-- 文件分片上传记录表 - 完整建表语句
-- =============================================

DROP TABLE IF EXISTS `sys_file_upload_chunk`;

CREATE TABLE `sys_file_upload_chunk` (
    `chunk_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '分片ID',
    `upload_id` VARCHAR(64) NOT NULL COMMENT '上传ID',
    `chunk_number` INT(11) NOT NULL COMMENT '分片序号',
    `chunk_size` BIGINT(20) NOT NULL COMMENT '分片大小（字节）',
    `chunk_path` VARCHAR(500) DEFAULT NULL COMMENT '分片文件存储路径',
    `status` VARCHAR(16) NOT NULL DEFAULT 'PENDING' COMMENT '状态：PENDING-待上传，UPLOADED-已上传，MERGED-已合并',
    `upload_time` DATETIME DEFAULT NULL COMMENT '上传时间',
    `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
    PRIMARY KEY (`chunk_id`),
    UNIQUE KEY `uk_upload_chunk` (`upload_id`, `chunk_number`),
    KEY `idx_upload_id` (`upload_id`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件分片上传记录表';
