referral.sql.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { bigint, mysqlTable, primaryKey, uniqueIndex, varchar } from "drizzle-orm/mysql-core"
  2. import { timestamps, ulid, utc, workspaceColumns } from "../drizzle/types"
  3. import { workspaceIndexes } from "./workspace.sql"
  4. export const ReferralCodeTable = mysqlTable(
  5. "referral_code",
  6. {
  7. workspaceID: ulid("workspace_id").notNull(),
  8. code: varchar("code", { length: 10 }).notNull(),
  9. ...timestamps,
  10. },
  11. (table) => [primaryKey({ columns: [table.workspaceID] }), uniqueIndex("code").on(table.code)],
  12. )
  13. export const ReferralTable = mysqlTable(
  14. "referral",
  15. {
  16. ...workspaceColumns,
  17. ...timestamps,
  18. inviteeAccountID: ulid("invitee_account_id").notNull(),
  19. },
  20. (table) => [...workspaceIndexes(table), uniqueIndex("invitee_account_id").on(table.inviteeAccountID)],
  21. )
  22. export const ReferralRewardTable = mysqlTable(
  23. "referral_reward",
  24. {
  25. workspaceID: ulid("workspace_id").notNull(),
  26. referralID: ulid("referral_id").notNull(),
  27. ...timestamps,
  28. amount: bigint("amount", { mode: "number" }).notNull(),
  29. timeApplied: utc("time_applied"),
  30. },
  31. (table) => [primaryKey({ columns: [table.workspaceID, table.referralID] })],
  32. )