import { relations, sql } from "drizzle-orm"; import { boolean, pgTable, timestamp, uuid, varchar, } from "drizzle-orm/pg-core"; import { apikey } from "./auth"; import { boards } from "./boards"; import { cards } from "./cards"; import { imports } from "./imports"; import { lists } from "./lists"; import { workspaceMembers, workspaces } from "./workspaces"; export const users = pgTable("user", { id: uuid("id") .notNull() .primaryKey() .default(sql`uuid_generate_v4()`), name: varchar("name", { length: 255 }), email: varchar("email", { length: 255 }).notNull().unique(), emailVerified: boolean("emailVerified").notNull(), image: varchar("image", { length: 255 }), createdAt: timestamp("createdAt").notNull().defaultNow(), updatedAt: timestamp("updatedAt").notNull().defaultNow(), stripeCustomerId: varchar("stripeCustomerId", { length: 255 }), }).enableRLS(); export const usersRelations = relations(users, ({ many }) => ({ deletedBoards: many(boards, { relationName: "boardDeletedByUser", }), boards: many(boards, { relationName: "boardCreatedByUser", }), deletedCards: many(cards, { relationName: "cardsDeletedByUser", }), cards: many(cards, { relationName: "cardsCreatedByUser", }), imports: many(imports), deletedLists: many(lists, { relationName: "listsDeletedByUser", }), lists: many(lists, { relationName: "listsCreatedByUser", }), deletedWorkspaces: many(workspaces, { relationName: "workspaceDeletedByUser", }), workspaces: many(workspaces, { relationName: "workspaceCreatedByUser", }), apiKeys: many(apikey), })); export const usersToWorkspacesRelations = relations( workspaceMembers, ({ one }) => ({ addedBy: one(users, { fields: [workspaceMembers.createdBy], references: [users.id], relationName: "usersToWorkspacesAddedByUser", }), deletedBy: one(users, { fields: [workspaceMembers.deletedBy], references: [users.id], relationName: "usersToWorkspacesDeletedByUser", }), user: one(users, { fields: [workspaceMembers.userId], references: [users.id], relationName: "usersToWorkspacesUser", }), workspace: one(workspaces, { fields: [workspaceMembers.workspaceId], references: [workspaces.id], relationName: "usersToWorkspacesWorkspace", }), }), );