-- =============================================
-- 资金服务平台 - 文件管理数据库初始化脚本
-- Database: fund_file
-- Version: 2.0
-- Created: 2026-02-22
-- Updated: 2026-03-02 (主键类型改为VARCHAR雪花ID)
-- =============================================

CREATE DATABASE IF NOT EXISTS fund_file DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE fund_file;

-- =============================================
-- 文件记录表 (file_record)
-- =============================================
CREATE TABLE IF NOT EXISTS `file_record` (
    `file_id` VARCHAR(32) NOT NULL COMMENT '主键ID（雪花算法）',
    `tenant_id` VARCHAR(32) NOT NULL COMMENT '租户ID',
    `file_name` VARCHAR(200) NOT NULL COMMENT '原始文件名',
    `file_path` VARCHAR(500) NOT NULL COMMENT '文件存储路径',
    `file_url` VARCHAR(500) COMMENT '文件访问URL',
    `file_size` BIGINT NOT NULL DEFAULT 0 COMMENT '文件大小(字节)',
    `file_type` VARCHAR(50) COMMENT '文件类型(image/document/video/audio/other)',
    `file_ext` VARCHAR(20) COMMENT '文件扩展名',
    `content_type` VARCHAR(100) COMMENT 'MIME类型',
    `md5` VARCHAR(32) COMMENT '文件MD5',
    `business_type` VARCHAR(50) COMMENT '业务类型(contract/receipt/expense/other)',
    `business_id` VARCHAR(32) COMMENT '关联业务ID',
    `description` VARCHAR(500) COMMENT '文件描述',
    `download_count` INT NOT NULL DEFAULT 0 COMMENT '下载次数',
    `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态：0-禁用，1-启用',
    `created_by` VARCHAR(32) COMMENT '上传人ID',
    `created_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` VARCHAR(32) COMMENT '更新人ID',
    `updated_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除：0-未删除，1-已删除',
    PRIMARY KEY (`file_id`),
    INDEX `idx_tenant` (`tenant_id`),
    INDEX `idx_business` (`business_type`, `business_id`),
    INDEX `idx_type` (`file_type`),
    INDEX `idx_created_time` (`created_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件记录表';
