Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 4x 1x 4x 4x | import { sql } from "drizzle-orm";
import { index, jsonb, pgTable, text, timestamp, varchar } from "drizzle-orm/pg-core";
// Session storage table.
// (IMPORTANT) This table is mandatory for OAuth authentication, don't drop it.
export const sessions = pgTable(
"sessions",
{
sid: varchar("sid").primaryKey(),
sess: jsonb("sess").notNull(),
expire: timestamp("expire").notNull(),
},
(table) => [index("IDX_session_expire").on(table.expire)]
);
// User roles enum
export const userRoles = ["user", "admin"] as const;
export type UserRole = (typeof userRoles)[number];
// User storage table.
// (IMPORTANT) This table is mandatory for OAuth authentication, don't drop it.
export const users = pgTable("users", {
id: varchar("id").primaryKey().default(sql`gen_random_uuid()`),
email: varchar("email").unique(),
firstName: varchar("first_name"),
lastName: varchar("last_name"),
profileImageUrl: varchar("profile_image_url"),
role: text("role").notNull().default("user"), // user or admin
createdAt: timestamp("created_at").defaultNow(),
updatedAt: timestamp("updated_at").defaultNow(),
});
export type UpsertUser = typeof users.$inferInsert;
export type User = typeof users.$inferSelect;
|