@oberoncms/plugin-pgsql
Version:
A PostgreSQL database plugin for OberonCMS
53 lines (52 loc) • 1.68 kB
JavaScript
import { pgTable, text, timestamp, integer, primaryKey } from "drizzle-orm/pg-core";
const users = pgTable("user", {
id: text("id").primaryKey().$defaultFn(() => crypto.randomUUID()),
name: text("name"),
email: text("email").notNull(),
emailVerified: timestamp("emailVerified", { mode: "date" }),
image: text("image"),
role: text("role", { enum: ["admin", "user"] }).notNull().default("user")
});
const accounts = pgTable(
"account",
{
userId: text("userId").notNull().references(() => users.id, { onDelete: "cascade" }),
type: text("type").$type().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]
})
})
);
const sessions = pgTable("session", {
sessionToken: text("sessionToken").primaryKey(),
userId: text("userId").notNull().references(() => users.id, { onDelete: "cascade" }),
expires: timestamp("expires", { mode: "date" }).notNull()
});
const verificationTokens = pgTable(
"verificationToken",
{
identifier: text("identifier").notNull(),
token: text("token").notNull(),
expires: timestamp("expires", { mode: "date" }).notNull()
},
(vt) => ({
compoundKey: primaryKey({ columns: [vt.identifier, vt.token] })
})
);
export {
accounts,
sessions,
users,
verificationTokens
};