billing.sql.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { bigint, boolean, int, mysqlTable, varchar, json } from "drizzle-orm/mysql-core"
  2. import { timestamps, workspaceColumns } from "../drizzle/types"
  3. import { workspaceIndexes } from "./workspace.sql"
  4. export const BillingTable = mysqlTable(
  5. "billing",
  6. {
  7. ...workspaceColumns,
  8. ...timestamps,
  9. customerID: varchar("customer_id", { length: 255 }),
  10. paymentMethodID: varchar("payment_method_id", { length: 255 }),
  11. paymentMethodLast4: varchar("payment_method_last4", { length: 4 }),
  12. balance: bigint("balance", { mode: "number" }).notNull(),
  13. reload: boolean("reload"),
  14. },
  15. (table) => [...workspaceIndexes(table)],
  16. )
  17. export const PaymentTable = mysqlTable(
  18. "payment",
  19. {
  20. ...workspaceColumns,
  21. ...timestamps,
  22. customerID: varchar("customer_id", { length: 255 }),
  23. paymentID: varchar("payment_id", { length: 255 }),
  24. amount: bigint("amount", { mode: "number" }).notNull(),
  25. },
  26. (table) => [...workspaceIndexes(table)],
  27. )
  28. export const UsageTable = mysqlTable(
  29. "usage",
  30. {
  31. ...workspaceColumns,
  32. ...timestamps,
  33. model: varchar("model", { length: 255 }).notNull(),
  34. provider: varchar("provider", { length: 255 }).notNull(),
  35. inputTokens: int("input_tokens").notNull(),
  36. outputTokens: int("output_tokens").notNull(),
  37. reasoningTokens: int("reasoning_tokens"),
  38. cacheReadTokens: int("cache_read_tokens"),
  39. cacheWriteTokens: int("cache_write_tokens"),
  40. cacheWrite5mTokens: int("cache_write_5m_tokens"),
  41. cacheWrite1hTokens: int("cache_write_1h_tokens"),
  42. cost: bigint("cost", { mode: "number" }).notNull(),
  43. },
  44. (table) => [...workspaceIndexes(table)],
  45. )