-- 创建数据库（如果不存在）
-- 请确保您的Docker Compose配置中的数据库名称与此处一致
CREATE DATABASE IF NOT EXISTS mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 切换到目标数据库
USE mydatabase;

-- 删除表（如果已存在），以便重新创建
DROP TABLE IF EXISTS `user`;

-- 创建用户表
CREATE TABLE `user` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID，主键，自增长',
    `username` VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名，唯一，不可为空',
    `password` VARCHAR(100) NOT NULL COMMENT '密码，存储加密后的密码，不可为空',
    `email` VARCHAR(100) NULL DEFAULT NULL COMMENT '邮箱地址',
    `status` INT NOT NULL DEFAULT 1 COMMENT '用户状态，例如 0:禁用, 1:启用，默认为1',
    `score` INT NOT NULL DEFAULT 0 COMMENT '用户积分，默认为0',
    `role` VARCHAR(20) NOT NULL DEFAULT 'USER' COMMENT '用户角色，例如 ADMIN, USER，默认为USER',
    `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_username` (`username`) -- 确保用户名唯一
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';

-- 可选：插入一条测试用户数据
-- 请注意：这里的密码 'password123' 是明文，您需要用您应用中配置的BCryptPasswordEncoder加密后的密码替换它
-- 例如，使用 Spring Security 的 BCryptPasswordEncoder 对 'your_secure_password' 进行加密
-- SELECT '$2a$10$YOUR_BCRYPT_HASH_HERE'; -- 替换这里的哈希值

INSERT INTO `user` (`username`, `password`, `email`, `status`, `score`, `role`, `create_time`, `update_time`)
VALUES (
    'testuser',
    '$$2a$10$EEBnvonhdTGA0StQHdxMUeAQyxm1uvJOKkHu01Pe0B9a2vfGH3cge', -- 请用加密后的密码替换此处的占位符
    'test@example.com',
    1, -- 启用状态
    100, -- 初始积分
    'USER', -- 默认角色
    CURRENT_TIMESTAMP,
    CURRENT_TIMESTAMP
);


