import { createId } from "@paralleldrive/cuid2"; import { relations } from "drizzle-orm"; import { boolean, pgTable, text, timestamp, varchar, } from "drizzle-orm/pg-core"; import { permissionsToUsers } from "./permissionsToUsers"; import { rolesToUsers } from "./rolesToUsers"; import { respondents } from "./respondents"; export const users = pgTable("users", { id: varchar("id", { length: 50 }) .primaryKey() .$defaultFn(() => createId()), name: varchar("name", { length: 255 }).notNull(), username: varchar("username").notNull().unique(), email: varchar("email"), password: text("password").notNull(), isEnabled: boolean("isEnabled").default(true), resetPasswordToken: varchar("resetPasswordToken"), createdAt: timestamp("createdAt", { mode: "date" }).defaultNow(), updatedAt: timestamp("updatedAt", { mode: "date" }).defaultNow(), deletedAt: timestamp("deletedAt", { mode: "date" }), }); export const usersRelations = relations(users, ({ many, one}) => ({ permissionsToUsers: many(permissionsToUsers), rolesToUsers: many(rolesToUsers), respondent: one(respondents, { fields: [users.id], references: [respondents.userId], }), }));