支持多子账号订阅与独立节点过滤
This commit is contained in:
Executable
+18
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
db_path="${1:-LionWebsite.db}"
|
||||
legacy_key="${2:-}"
|
||||
|
||||
if [[ -z "$legacy_key" || ! "$legacy_key" =~ ^[A-Za-z0-9._~-]+$ ]]; then
|
||||
echo "用法: $0 <LionWebsite.db> <现有共享订阅 upstream key>" >&2
|
||||
exit 2
|
||||
fi
|
||||
if [[ ! -f "$db_path" ]]; then
|
||||
echo "数据库不存在: $db_path" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
sqlite3 "$db_path" -cmd ".parameter init" -cmd ".parameter set :legacy_key '$legacy_key'" \
|
||||
< "$(dirname "$0")/migrate_subscription_accounts.sql"
|
||||
echo "订阅子账号迁移完成: $db_path"
|
||||
@@ -0,0 +1,38 @@
|
||||
BEGIN;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS subscription_account (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name VARCHAR(100) NOT NULL UNIQUE,
|
||||
upstream_key VARCHAR(255) NOT NULL UNIQUE,
|
||||
filter_high_multiplier INTEGER NOT NULL DEFAULT 1,
|
||||
enabled INTEGER NOT NULL DEFAULT 1,
|
||||
last_success_at DATETIME,
|
||||
last_error TEXT,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
INSERT INTO subscription_account (name, upstream_key, filter_high_multiplier, enabled)
|
||||
SELECT '旧共享订阅', :legacy_key, 1, 1
|
||||
WHERE NOT EXISTS (SELECT 1 FROM subscription_account WHERE name = '旧共享订阅')
|
||||
AND NOT EXISTS (SELECT 1 FROM subscription_account WHERE upstream_key = :legacy_key);
|
||||
|
||||
CREATE TABLE sub_bind_new (
|
||||
key VARCHAR(255) NOT NULL PRIMARY KEY,
|
||||
user VARCHAR(255) NOT NULL UNIQUE,
|
||||
subscription_account_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (subscription_account_id) REFERENCES subscription_account(id)
|
||||
);
|
||||
|
||||
INSERT INTO sub_bind_new (key, user, subscription_account_id)
|
||||
SELECT sb.key, sb.user, sa.id
|
||||
FROM sub_bind sb
|
||||
JOIN (SELECT id FROM subscription_account
|
||||
WHERE name = '旧共享订阅' OR upstream_key = :legacy_key
|
||||
ORDER BY id LIMIT 1) sa;
|
||||
|
||||
DROP TABLE sub_bind;
|
||||
ALTER TABLE sub_bind_new RENAME TO sub_bind;
|
||||
CREATE INDEX idx_sub_bind_account ON sub_bind(subscription_account_id);
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user