UNPKG

create-apppaaaul

Version:

Create projects as paaauldev would

94 lines (85 loc) 2.66 kB
import { pgEnum, pgTable, text, timestamp, boolean, primaryKey, integer, } from "drizzle-orm/pg-core"; export const roleEnum = pgEnum("role", ["admin", "user"]); export const users = pgTable("users", { id: text("id") .primaryKey() .$defaultFn(() => crypto.randomUUID()), name: text("name"), email: text("email").notNull(), emailVerified: timestamp("emailVerified", { mode: "date" }), password: text("password"), role: roleEnum("role").default("user"), createdAt: timestamp("createdAt", { mode: "date" }).notNull().default(new Date()), }); export const accounts = pgTable( "account", { user: text("user") .notNull() .references(() => users.id, { onDelete: "cascade" }), type: text("type").$type<AdapterAccountType>().notNull(), provider: text("provider").notNull(), providerAccountId: text("providerAccountId").notNull(), refresh_token: text("refresh_token"), access_token: text("access_token"), expires_at: integer("expires_at"), token_type: text("token_type"), scope: text("scope"), id_token: text("id_token"), session_state: text("session_state"), }, (account) => ({ compoundKey: primaryKey({ columns: [account.provider, account.providerAccountId], }), }), ); export const sessions = pgTable("session", { sessionToken: text("sessionToken").primaryKey(), user: text("user") .notNull() .references(() => users.id, { onDelete: "cascade" }), expires: timestamp("expires", { mode: "date" }).notNull(), }); export const verificationTokens = pgTable( "verificationToken", { identifier: text("identifier").notNull(), token: text("token").notNull(), expires: timestamp("expires", { mode: "date" }).notNull(), }, (verificationToken) => ({ compositePk: primaryKey({ columns: [verificationToken.identifier, verificationToken.token], }), }), ); export const authenticators = pgTable( "authenticator", { credentialID: text("credentialID").notNull().unique(), user: text("user") .notNull() .references(() => users.id, { onDelete: "cascade" }), providerAccountId: text("providerAccountId").notNull(), credentialPublicKey: text("credentialPublicKey").notNull(), counter: integer("counter").notNull(), credentialDeviceType: text("credentialDeviceType").notNull(), credentialBackedUp: boolean("credentialBackedUp").notNull(), transports: text("transports"), }, (authenticator) => ({ compositePK: primaryKey({ columns: [authenticator.user, authenticator.credentialID], }), }), ); export type SelectUser = typeof users.$inferSelect;