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) ); ''') conn.commit() conn.close()