85 lines
2.3 KiB
TypeScript
85 lines
2.3 KiB
TypeScript
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",
|
|
}),
|
|
}),
|
|
);
|