From f7c2ef876f3ba261380ae37bac7ad5805b61d80b Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 26 Mar 2026 18:54:16 -0400 Subject: [PATCH] wip: zen --- .../console/core/script/freeze-workspace.ts | 39 +++++++++++++++++++ packages/console/core/src/util/price.ts | 4 ++ 2 files changed, 43 insertions(+) create mode 100644 packages/console/core/script/freeze-workspace.ts diff --git a/packages/console/core/script/freeze-workspace.ts b/packages/console/core/script/freeze-workspace.ts new file mode 100644 index 0000000000..d2ccf21ace --- /dev/null +++ b/packages/console/core/script/freeze-workspace.ts @@ -0,0 +1,39 @@ +import { Billing } from "../src/billing.js" +import { Database, eq } from "../src/drizzle/index.js" +import { BillingTable } from "../src/schema/billing.sql.js" +import { WorkspaceTable } from "../src/schema/workspace.sql.js" +import { microCentsToCents } from "../src/util/price.js" + +// get input from command line +const workspaceID = process.argv[2] + +if (!workspaceID) { + console.error("Usage: bun freeze-workspace.ts ") + process.exit(1) +} + +// check workspace exists +const workspace = await Database.use((tx) => + tx + .select() + .from(WorkspaceTable) + .where(eq(WorkspaceTable.id, workspaceID)) + .then((rows) => rows[0]), +) +if (!workspace) { + console.error("Error: Workspace not found") + process.exit(1) +} + +const billing = await Database.use((tx) => + tx + .select() + .from(BillingTable) + .where(eq(BillingTable.workspaceID, workspaceID)) + .then((rows) => rows[0]), +) + +const amountInDollars = microCentsToCents(billing.balance) / 100 +await Billing.grantCredit(workspaceID, 0 - amountInDollars) + +console.log(`Removed payment of $${amountInDollars.toFixed(2)} from workspace ${workspaceID}`) diff --git a/packages/console/core/src/util/price.ts b/packages/console/core/src/util/price.ts index abdbca0329..ff7a576ddc 100644 --- a/packages/console/core/src/util/price.ts +++ b/packages/console/core/src/util/price.ts @@ -1,3 +1,7 @@ export function centsToMicroCents(amount: number) { return Math.round(amount * 1000000) } + +export function microCentsToCents(amount: number) { + return Math.round(amount / 1000000) +}