amati/apps/backend/src/drizzle/schema/users.ts
2024-08-22 15:54:34 +07:00

37 lines
1.1 KiB
TypeScript

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],
}),
}));