import {createId as cuid2} from '@paralleldrive/cuid2'; import {type InferSelectModel, relations} from 'drizzle-orm'; import {boolean, pgTable, text, uuid} from 'drizzle-orm/pg-core'; import {createSelectSchema} from 'drizzle-zod'; import {timestamps} from '../../../common/utils/table'; import {user_roles} from './userRoles.table'; export const usersTable = pgTable('users', { id: uuid().primaryKey().defaultRandom(), cuid: text() .unique() .$defaultFn(() => cuid2()), username: text().unique(), email: text().unique(), first_name: text(), last_name: text(), verified: boolean().default(false), receive_email: boolean().default(false), email_verified: boolean().default(false), picture: text(), mfa_enabled: boolean().notNull().default(false), theme: text().default('system'), ...timestamps, }); export const userRelations = relations(usersTable, ({ many }) => ({ user_roles: many(user_roles), })); export const selectUserSchema = createSelectSchema(usersTable); export type Users = InferSelectModel;