credit-workspace.ts 1023 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { Billing } from "../src/billing.js"
  2. import { Database, eq } from "../src/drizzle/index.js"
  3. import { WorkspaceTable } from "../src/schema/workspace.sql.js"
  4. // get input from command line
  5. const workspaceID = process.argv[2]
  6. const dollarAmount = process.argv[3]
  7. if (!workspaceID || !dollarAmount) {
  8. console.error("Usage: bun credit-workspace.ts <workspaceID> <dollarAmount>")
  9. process.exit(1)
  10. }
  11. // check workspace exists
  12. const workspace = await Database.use((tx) =>
  13. tx
  14. .select()
  15. .from(WorkspaceTable)
  16. .where(eq(WorkspaceTable.id, workspaceID))
  17. .then((rows) => rows[0]),
  18. )
  19. if (!workspace) {
  20. console.error("Error: Workspace not found")
  21. process.exit(1)
  22. }
  23. const amountInDollars = parseFloat(dollarAmount)
  24. if (isNaN(amountInDollars) || amountInDollars <= 0) {
  25. console.error("Error: dollarAmount must be a positive number")
  26. process.exit(1)
  27. }
  28. await Billing.grantCredit(workspaceID, amountInDollars)
  29. console.log(`Added payment of $${amountInDollars.toFixed(2)} to workspace ${workspaceID}`)