将数据库脚本合并在一起

This commit is contained in:
liuwei
2025-03-17 17:48:02 +08:00
parent 12440c2752
commit f28d145e30

119
sql/init.sql Normal file
View File

@@ -0,0 +1,119 @@
-- 创建数据库
CREATE DATABASE IF NOT EXISTS message_archive CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE message_archive;
CREATE TABLE IF NOT EXISTS message_archive.messages
(
id int auto_increment comment '自增主键ID'
primary key,
group_id varchar(20) null comment '群ID',
timestamp varchar(20) not null comment '消息时间戳',
sender varchar(255) not null comment '发送者微信ID',
content text null comment '消息内容',
message_type varchar(50) null comment '消息类型(文本、图片、视频等)',
attachment_url varchar(512) null comment '附件URL图片、视频链接',
message_id varchar(32) null comment '消息 id',
message_xml text null comment '消息 xml 部分',
message_thumb text null comment '视频或图片消息的缩略图路径'
)
comment '微信群消息存储表,记录所有群聊消息';
CREATE TABLE IF NOT EXISTS message_archive.speech_counts
(
id int auto_increment comment '自增主键ID'
primary key,
group_id text null comment '群聊ID',
wx_id text null comment '用户微信ID',
date text null comment '统计日期YYYY-MM-DD格式',
count int null comment '发言次数',
constraint speech_counts_group_id_wx_id_date_uindex
unique (group_id, wx_id, date) using hash
)
comment '群成员每日发言统计表';
CREATE TABLE IF NOT EXISTS message_archive.t_encyclopedia_active_tasks
(
active_task_id int auto_increment comment '任务ID'
primary key,
group_id varchar(50) not null comment '群聊ID',
question varchar(255) not null comment '问题内容',
answer varchar(100) not null comment '正确答案',
score int not null comment '答对可获得的分数',
description text null comment '问题描述或提示',
holder_id varchar(50) not null comment '出题人ID',
assigned_at datetime default current_timestamp() null comment '任务分配时间',
status enum ('pending', 'completed') default 'pending' null comment '任务状态',
question_id int null comment '问题ID'
)
comment '百科答题游戏活跃任务表';
create or replace index group_id
on message_archive.t_encyclopedia_active_tasks (group_id);
create or replace index question_id
on message_archive.t_encyclopedia_active_tasks (question_id);
CREATE TABLE IF NOT EXISTS message_archive.t_encyclopedia_groups
(
group_id varchar(50) not null comment '群聊ID'
primary key,
created_at datetime default current_timestamp() null comment '记录创建时间'
)
comment '百科答题游戏群聊表';
CREATE TABLE IF NOT EXISTS message_archive.t_encyclopedia_players
(
player_id varchar(50) not null comment '玩家ID微信ID',
group_id varchar(50) not null comment '群聊ID',
player_name varchar(50) not null comment '玩家名称',
points int default 0 null comment '玩家积分',
created_at datetime default current_timestamp() null comment '记录创建时间',
primary key (player_id, group_id)
)
comment '百科答题游戏玩家表';
CREATE TABLE IF NOT EXISTS message_archive.t_encyclopedia_task_history
(
history_id int auto_increment comment '历史记录ID'
primary key,
group_id varchar(50) not null comment '群聊ID',
active_task_id int not null comment '关联的任务ID',
player_id varchar(50) not null comment '回答者ID',
answer varchar(100) not null comment '玩家的回答',
is_correct tinyint(1) default 0 null comment '是否回答正确',
points_earned int default 0 null comment '获得的积分',
completed_at datetime default current_timestamp() null comment '完成时间'
)
comment '百科答题游戏任务历史表';
create or replace index group_id
on message_archive.t_encyclopedia_task_history (group_id);
CREATE TABLE IF NOT EXISTS message_archive.t_sign_record
(
id bigint auto_increment comment '自增主键ID'
primary key,
wx_id varchar(100) not null comment '用户微信ID',
group_id varchar(100) not null comment '群聊ID',
wx_nick_name varchar(100) not null comment '用户昵称',
points int default 0 null comment '积分数量',
sign_stat datetime null comment '最近签到时间',
signin_streak int default 0 null comment '连续签到天数',
create_time datetime default current_timestamp() null comment '记录创建时间',
update_time datetime default current_timestamp() null on update current_timestamp() comment '记录更新时间',
constraint unique_sign
unique (wx_id, group_id)
)
comment '用户群内签到记录表';
CREATE TABLE IF NOT EXISTS message_archive.tasks
(
task_id int auto_increment comment '任务ID'
primary key,
task_description varchar(255) not null comment '任务描述',
reminder_time time not null comment '提醒时间',
task_type enum ('single', 'recurring') default 'single' null comment '任务类型:单次或周期性',
status enum ('pending', 'completed') default 'pending' null comment '任务状态:待办或已完成',
created_at timestamp default current_timestamp() null comment '创建时间'
)
comment '机器人定时任务表';