2026-03-09 16:10:29 +08:00
|
|
|
-- Weibo-HotSign Database Initialization Script for SQLite
|
|
|
|
|
-- Create tables according to development document specification
|
|
|
|
|
|
|
|
|
|
-- Users table
|
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
|
|
|
id TEXT PRIMARY KEY,
|
|
|
|
|
username TEXT UNIQUE NOT NULL,
|
2026-03-16 16:14:08 +08:00
|
|
|
email TEXT UNIQUE,
|
|
|
|
|
hashed_password TEXT,
|
|
|
|
|
wx_openid TEXT UNIQUE,
|
|
|
|
|
wx_nickname TEXT,
|
|
|
|
|
wx_avatar TEXT,
|
2026-03-09 16:10:29 +08:00
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
is_active INTEGER DEFAULT 1
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- Accounts table
|
|
|
|
|
CREATE TABLE IF NOT EXISTS accounts (
|
|
|
|
|
id TEXT PRIMARY KEY,
|
|
|
|
|
user_id TEXT NOT NULL,
|
|
|
|
|
weibo_user_id TEXT NOT NULL,
|
|
|
|
|
remark TEXT,
|
|
|
|
|
encrypted_cookies TEXT NOT NULL,
|
|
|
|
|
iv TEXT NOT NULL,
|
|
|
|
|
status TEXT DEFAULT 'pending',
|
|
|
|
|
last_checked_at TIMESTAMP NULL,
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- Tasks table
|
|
|
|
|
CREATE TABLE IF NOT EXISTS tasks (
|
|
|
|
|
id TEXT PRIMARY KEY,
|
|
|
|
|
account_id TEXT NOT NULL,
|
|
|
|
|
cron_expression TEXT NOT NULL,
|
|
|
|
|
is_enabled INTEGER DEFAULT 1,
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- Signin logs table
|
|
|
|
|
CREATE TABLE IF NOT EXISTS signin_logs (
|
|
|
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
|
|
account_id TEXT NOT NULL,
|
|
|
|
|
topic_title TEXT,
|
|
|
|
|
status TEXT NOT NULL,
|
|
|
|
|
reward_info TEXT,
|
|
|
|
|
error_message TEXT,
|
|
|
|
|
signed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
FOREIGN KEY (account_id) REFERENCES accounts(id)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- Create indexes for better performance
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
|
2026-03-16 16:14:08 +08:00
|
|
|
CREATE INDEX IF NOT EXISTS idx_users_wx_openid ON users(wx_openid);
|
2026-03-09 16:10:29 +08:00
|
|
|
CREATE INDEX IF NOT EXISTS idx_accounts_user_id ON accounts(user_id);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_accounts_status ON accounts(status);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_account_id ON tasks(account_id);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_is_enabled ON tasks(is_enabled);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_signin_logs_account_id ON signin_logs(account_id);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_signin_logs_signed_at ON signin_logs(signed_at);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_signin_logs_status ON signin_logs(status);
|