-- 创建数据库（如果不存在）
CREATE DATABASE IF NOT EXISTS yinli CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 使用数据库
USE yinli;

-- 创建用户表
CREATE TABLE IF NOT EXISTS `user` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
    `name` varchar(100) NOT NULL COMMENT '用户名',
    `password` varchar(255) NOT NULL COMMENT '密码',
    `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '用户状态 1:正常 0:禁用',
    `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_name` (`name`),
    KEY `idx_status` (`status`),
    KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';

-- 插入测试数据
INSERT INTO `user` (`name`, `password`, `status`) VALUES 
('admin', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 1),
('testuser', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 1)
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`);

-- 创建索引优化查询
CREATE INDEX IF NOT EXISTS `idx_user_name_status` ON `user` (`name`, `status`);

-- 创建会话表（可选，用于会话管理）
CREATE TABLE IF NOT EXISTS `user_session` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '会话ID',
    `user_id` int(11) unsigned NOT NULL COMMENT '用户ID',
    `token` varchar(500) NOT NULL COMMENT 'JWT令牌',
    `expires_at` datetime NOT NULL COMMENT '过期时间',
    `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_token` (`token`(255)),
    KEY `idx_expires_at` (`expires_at`),
    FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会话表';

-- 创建API访问日志表（可选）
CREATE TABLE IF NOT EXISTS `api_log` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '日志ID',
    `user_id` int(11) unsigned DEFAULT NULL COMMENT '用户ID',
    `method` varchar(10) NOT NULL COMMENT 'HTTP方法',
    `path` varchar(255) NOT NULL COMMENT '请求路径',
    `status_code` int(11) NOT NULL COMMENT '响应状态码',
    `ip` varchar(45) NOT NULL COMMENT '客户端IP',
    `user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
    `request_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '请求时间',
    `response_time` int(11) DEFAULT NULL COMMENT '响应时间(毫秒)',
    PRIMARY KEY (`id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_path` (`path`),
    KEY `idx_status_code` (`status_code`),
    KEY `idx_ip` (`ip`),
    KEY `idx_request_time` (`request_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API访问日志表';
