2026-03-18 13:38:17 +08:00
|
|
|
import sqlite3
|
|
|
|
|
import os
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
DB_PATH = os.path.join(os.path.dirname(__file__), '..', 'data', 'snatcher.db')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_db():
|
|
|
|
|
os.makedirs(os.path.dirname(DB_PATH), exist_ok=True)
|
|
|
|
|
conn = sqlite3.connect(DB_PATH)
|
|
|
|
|
conn.row_factory = sqlite3.Row
|
|
|
|
|
conn.execute("PRAGMA journal_mode=WAL")
|
|
|
|
|
return conn
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def init_db():
|
|
|
|
|
conn = get_db()
|
|
|
|
|
conn.executescript('''
|
|
|
|
|
CREATE TABLE IF NOT EXISTS accounts (
|
|
|
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
|
|
name TEXT NOT NULL,
|
|
|
|
|
phone TEXT NOT NULL DEFAULT '',
|
|
|
|
|
password TEXT NOT NULL DEFAULT '',
|
|
|
|
|
auth_file TEXT NOT NULL,
|
|
|
|
|
is_logged_in INTEGER DEFAULT 0,
|
|
|
|
|
login_msg TEXT DEFAULT '',
|
|
|
|
|
created_at TEXT DEFAULT (datetime('now', 'localtime')),
|
|
|
|
|
updated_at TEXT DEFAULT (datetime('now', 'localtime'))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS tasks (
|
|
|
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
|
|
account_id INTEGER NOT NULL,
|
|
|
|
|
target_url TEXT NOT NULL,
|
|
|
|
|
item_name TEXT DEFAULT '',
|
|
|
|
|
item_id TEXT DEFAULT '',
|
|
|
|
|
sku_id TEXT DEFAULT '',
|
|
|
|
|
price TEXT DEFAULT '',
|
|
|
|
|
snatch_time TEXT NOT NULL,
|
|
|
|
|
status TEXT DEFAULT 'pending',
|
|
|
|
|
result TEXT DEFAULT '',
|
|
|
|
|
created_at TEXT DEFAULT (datetime('now', 'localtime')),
|
|
|
|
|
updated_at TEXT DEFAULT (datetime('now', 'localtime')),
|
|
|
|
|
FOREIGN KEY (account_id) REFERENCES accounts(id)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS orders (
|
|
|
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
|
|
task_id INTEGER NOT NULL,
|
|
|
|
|
account_id INTEGER NOT NULL,
|
|
|
|
|
status TEXT DEFAULT 'unknown',
|
|
|
|
|
detail TEXT DEFAULT '',
|
|
|
|
|
created_at TEXT DEFAULT (datetime('now', 'localtime')),
|
|
|
|
|
FOREIGN KEY (task_id) REFERENCES tasks(id),
|
|
|
|
|
FOREIGN KEY (account_id) REFERENCES accounts(id)
|
|
|
|
|
);
|
2026-04-02 12:11:09 +08:00
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS admin (
|
|
|
|
|
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
|
|
|
password_hash TEXT NOT NULL,
|
|
|
|
|
fail_count INTEGER DEFAULT 0,
|
|
|
|
|
locked_until TEXT DEFAULT '',
|
|
|
|
|
created_at TEXT DEFAULT (datetime('now', 'localtime')),
|
|
|
|
|
updated_at TEXT DEFAULT (datetime('now', 'localtime'))
|
|
|
|
|
);
|
2026-03-18 13:38:17 +08:00
|
|
|
''')
|
|
|
|
|
conn.commit()
|
|
|
|
|
conn.close()
|