Files
sub-router/server/src/db.ts
2026-03-31 13:11:54 +08:00

61 lines
1.5 KiB
TypeScript

import Database from 'better-sqlite3';
import path from 'path';
const DB_PATH = path.join(__dirname, '..', 'data', 'sub-router.db');
const db = new Database(DB_PATH);
db.pragma('journal_mode = WAL');
db.pragma('foreign_keys = ON');
db.exec(`
CREATE TABLE IF NOT EXISTS subscriptions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
url TEXT NOT NULL,
enabled INTEGER NOT NULL DEFAULT 1,
raw_config TEXT,
last_fetch TEXT,
node_count INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS fetched_nodes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
subscription_id INTEGER NOT NULL,
name TEXT NOT NULL,
type TEXT NOT NULL,
server TEXT,
port INTEGER,
surge_line TEXT NOT NULL,
enabled INTEGER NOT NULL DEFAULT 1,
FOREIGN KEY (subscription_id) REFERENCES subscriptions(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS static_nodes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
uri TEXT NOT NULL,
type TEXT NOT NULL,
surge_line TEXT NOT NULL,
enabled INTEGER NOT NULL DEFAULT 1,
sort_order INTEGER NOT NULL DEFAULT 0
);
CREATE TABLE IF NOT EXISTS rules (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT NOT NULL,
value TEXT NOT NULL,
action TEXT NOT NULL DEFAULT 'PROXY',
comment TEXT,
enabled INTEGER NOT NULL DEFAULT 1,
sort_order INTEGER NOT NULL DEFAULT 0
);
CREATE TABLE IF NOT EXISTS config (
key TEXT PRIMARY KEY,
value TEXT
);
`);
export default db;