| import { mysqlTable, uniqueIndex, varchar, int, mysqlEnum, index, bigint } from "drizzle-orm/mysql-core" |
| import { timestamps, ulid, utc, workspaceColumns } from "../drizzle/types" |
| import { workspaceIndexes } from "./workspace.sql" |
|
|
| export const UserRole = ["admin", "member"] as const |
|
|
| export const UserTable = mysqlTable( |
| "user", |
| { |
| ...workspaceColumns, |
| ...timestamps, |
| accountID: ulid("account_id"), |
| email: varchar("email", { length: 255 }), |
| name: varchar("name", { length: 255 }).notNull(), |
| timeSeen: utc("time_seen"), |
| color: int("color"), |
| role: mysqlEnum("role", UserRole).notNull(), |
| monthlyLimit: int("monthly_limit"), |
| monthlyUsage: bigint("monthly_usage", { mode: "number" }), |
| timeMonthlyUsageUpdated: utc("time_monthly_usage_updated"), |
| }, |
| (table) => [ |
| ...workspaceIndexes(table), |
| uniqueIndex("user_account_id").on(table.workspaceID, table.accountID), |
| uniqueIndex("user_email").on(table.workspaceID, table.email), |
| index("global_account_id").on(table.accountID), |
| index("global_email").on(table.email), |
| ], |
| ) |
|
|