user.sql.ts 1.1 KB

1234567891011121314151617181920212223242526272829
  1. import { mysqlTable, uniqueIndex, varchar, int, mysqlEnum, index, bigint } from "drizzle-orm/mysql-core"
  2. import { timestamps, ulid, utc, workspaceColumns } from "../drizzle/types"
  3. import { workspaceIndexes } from "./workspace.sql"
  4. export const UserRole = ["admin", "member"] as const
  5. export const UserTable = mysqlTable(
  6. "user",
  7. {
  8. ...workspaceColumns,
  9. ...timestamps,
  10. accountID: ulid("account_id"),
  11. email: varchar("email", { length: 255 }),
  12. name: varchar("name", { length: 255 }).notNull(),
  13. timeSeen: utc("time_seen"),
  14. color: int("color"),
  15. role: mysqlEnum("role", UserRole).notNull(),
  16. monthlyLimit: int("monthly_limit"),
  17. monthlyUsage: bigint("monthly_usage", { mode: "number" }),
  18. timeMonthlyUsageUpdated: utc("time_monthly_usage_updated"),
  19. },
  20. (table) => [
  21. ...workspaceIndexes(table),
  22. uniqueIndex("user_account_id").on(table.workspaceID, table.accountID),
  23. uniqueIndex("user_email").on(table.workspaceID, table.email),
  24. index("global_account_id").on(table.accountID),
  25. index("global_email").on(table.email),
  26. ],
  27. )