From b1e3435613ef092d43353d511b632a8de64efc5d Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 18 Feb 2026 07:49:25 -0800 Subject: migrate funds to tb --- lib/migrate.ts | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'lib/migrate.ts') diff --git a/lib/migrate.ts b/lib/migrate.ts index 79f9546c..d4bfd61a 100644 --- a/lib/migrate.ts +++ b/lib/migrate.ts @@ -4,6 +4,8 @@ import { l, warn } from "$lib/logging"; import { createBalanceAccount, createCreditAccounts, + createFundAccount, + tbFundCredit, tbSetBalance, tbSetPending, tbSetCredit, @@ -176,4 +178,35 @@ export const migrateAutowithdraw = async () => { return count; }; +export const migrateFundsToTB = async () => { + const migrated = await db.get("tb:funds-migrated"); + if (migrated) return 0; + + let count = 0; + + for await (const k of scan("fund:*")) { + try { + // Skip sub-keys like fund:name:payments, fund:name:managers, fund:limit + const parts = k.split(":"); + if (parts.length !== 2) continue; + const name = parts[1]; + if (name === "limit") continue; + + const keyType = await db.type(k); + if (keyType !== "string") continue; + + const balance = Number.parseInt((await db.get(k)) || "0"); + await createFundAccount(name); + if (balance > 0) await tbFundCredit(name, balance); + count++; + } catch (e) { + warn("failed to migrate fund", k, e.message); + } + } + + await db.set("tb:funds-migrated", Date.now().toString()); + l(`Migrated ${count} funds to TigerBeetle`); + return count; +}; + export default migrate; -- cgit v1.2.3