Files
weibo_signin/init-db.sql

91 lines
3.2 KiB
MySQL
Raw Normal View History

2026-03-09 14:05:00 +08:00
-- Weibo-HotSign Database Initialization Script for MySQL
-- 创建表结构(数据库需提前创建好)
-- 如需手动建库: CREATE DATABASE weibo_hotsign DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2026-03-09 14:05:00 +08:00
-- Users table
CREATE TABLE IF NOT EXISTS users (
id CHAR(36) PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
2026-03-17 09:41:37 +08:00
email VARCHAR(255) UNIQUE,
hashed_password VARCHAR(255),
wx_openid VARCHAR(64) UNIQUE,
wx_nickname VARCHAR(100),
wx_avatar VARCHAR(500),
is_admin BOOLEAN DEFAULT FALSE,
2026-03-09 14:05:00 +08:00
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
2026-03-17 09:41:37 +08:00
is_active BOOLEAN DEFAULT TRUE,
INDEX idx_users_email (email),
INDEX idx_users_username (username),
INDEX idx_users_wx_openid (wx_openid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2026-03-09 14:05:00 +08:00
-- Accounts table
CREATE TABLE IF NOT EXISTS accounts (
id CHAR(36) PRIMARY KEY,
user_id CHAR(36) NOT NULL,
weibo_user_id VARCHAR(20) NOT NULL,
remark VARCHAR(100),
encrypted_cookies TEXT NOT NULL,
iv VARCHAR(32) NOT NULL,
status VARCHAR(20) DEFAULT 'pending',
selected_topics JSON DEFAULT NULL,
2026-03-09 14:05:00 +08:00
last_checked_at TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
2026-03-17 09:41:37 +08:00
INDEX idx_accounts_user_id (user_id),
INDEX idx_accounts_status (status),
2026-03-09 14:05:00 +08:00
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
2026-03-17 09:41:37 +08:00
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2026-03-09 14:05:00 +08:00
-- Tasks table
CREATE TABLE IF NOT EXISTS tasks (
id CHAR(36) PRIMARY KEY,
account_id CHAR(36) NOT NULL,
cron_expression VARCHAR(50) NOT NULL,
is_enabled BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
2026-03-17 09:41:37 +08:00
INDEX idx_tasks_account_id (account_id),
INDEX idx_tasks_is_enabled (is_enabled),
2026-03-09 14:05:00 +08:00
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
2026-03-17 09:41:37 +08:00
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2026-03-09 14:05:00 +08:00
-- Signin logs table
CREATE TABLE IF NOT EXISTS signin_logs (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
account_id CHAR(36) NOT NULL,
topic_title VARCHAR(100),
2026-03-17 13:54:35 +08:00
status VARCHAR(50) NOT NULL,
2026-03-09 14:05:00 +08:00
reward_info JSON,
error_message TEXT,
signed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
2026-03-17 09:41:37 +08:00
INDEX idx_signin_logs_account_id (account_id),
INDEX idx_signin_logs_signed_at (signed_at),
INDEX idx_signin_logs_status (status),
2026-04-01 15:09:21 +08:00
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
2026-03-17 09:41:37 +08:00
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Invite codes table
CREATE TABLE IF NOT EXISTS invite_codes (
id CHAR(36) PRIMARY KEY,
code VARCHAR(32) UNIQUE NOT NULL,
created_by CHAR(36) NOT NULL,
used_by CHAR(36),
is_used BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
used_at TIMESTAMP NULL,
INDEX idx_invite_codes_code (code),
INDEX idx_invite_codes_is_used (is_used)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- System config table (key-value)
CREATE TABLE IF NOT EXISTS system_config (
`key` VARCHAR(64) PRIMARY KEY,
`value` VARCHAR(500) NOT NULL DEFAULT '',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 默认配置
INSERT IGNORE INTO system_config (`key`, `value`) VALUES
('webhook_url', ''),
('daily_report_hour', '23'),
('daily_report_minute', '30');