feat: 接入 AnyTLS 节点托管和用户流量同步

This commit is contained in:
2026-09-29 13:35:44 +08:00
parent 586c2399d1
commit ac5fed695c
24 changed files with 1413 additions and 185 deletions
+9 -5
View File
@@ -25,7 +25,11 @@ function snapshot(db: Database.Database) {
)
.filter(
({ name }) =>
!["managed_certificates", "node_installations"].includes(name),
![
"managed_certificates",
"node_installations",
"node_agent_counters",
].includes(name),
)
.map(({ name }) => [name, db.prepare(`SELECT * FROM "${name}"`).all()]),
);
@@ -45,7 +49,7 @@ test("fresh database exactly matches the inspected remote v4 column definitions"
const fresh = new Database(":memory:");
const remote = remoteDb();
migrateDatabase(fresh);
assert.equal(fresh.pragma("user_version", { simple: true }), 5);
assert.equal(fresh.pragma("user_version", { simple: true }), 6);
for (const { name } of remote
.prepare("SELECT name FROM sqlite_master WHERE type='table'")
.all() as { name: string }[]) {
@@ -98,7 +102,7 @@ for (const existing of [
if (!existing.includes(field)) delete row[field];
}
assert.deepEqual(after, before);
assert.equal(db.pragma("user_version", { simple: true }), 5);
assert.equal(db.pragma("user_version", { simple: true }), 6);
db.close();
});
}
@@ -128,8 +132,8 @@ test("failed migrations roll back all statements and future schemas are not down
db.prepare("SELECT name FROM sqlite_master WHERE type='table'").all(),
[{ name: "hy2_users" }],
);
db.pragma("user_version = 6");
db.pragma("user_version = 7");
assert.throws(() => migrateDatabase(db), /版本/);
assert.equal(db.pragma("user_version", { simple: true }), 6);
assert.equal(db.pragma("user_version", { simple: true }), 7);
db.close();
});