73 lines
2.2 KiB
TypeScript
73 lines
2.2 KiB
TypeScript
import { pgTable, foreignKey, text, timestamp, primaryKey, unique, integer, boolean } from "drizzle-orm/pg-core"
|
|
import { sql } from "drizzle-orm"
|
|
|
|
|
|
|
|
export const session = pgTable("session", {
|
|
sessionToken: text().primaryKey().notNull(),
|
|
userId: text().notNull(),
|
|
expires: timestamp({ mode: 'string' }).notNull(),
|
|
}, (table) => [
|
|
foreignKey({
|
|
columns: [table.userId],
|
|
foreignColumns: [user.id],
|
|
name: "session_userId_user_id_fk"
|
|
}).onDelete("cascade"),
|
|
]);
|
|
|
|
export const user = pgTable("user", {
|
|
id: text().primaryKey().notNull(),
|
|
name: text(),
|
|
email: text().notNull(),
|
|
emailVerified: timestamp({ mode: 'string' }),
|
|
image: text(),
|
|
});
|
|
|
|
export const verificationToken = pgTable("verificationToken", {
|
|
identifier: text().notNull(),
|
|
token: text().notNull(),
|
|
expires: timestamp({ mode: 'string' }).notNull(),
|
|
}, (table) => [
|
|
primaryKey({ columns: [table.identifier, table.token], name: "verificationToken_identifier_token_pk"}),
|
|
]);
|
|
|
|
export const authenticator = pgTable("authenticator", {
|
|
credentialId: text().notNull(),
|
|
userId: text().notNull(),
|
|
providerAccountId: text().notNull(),
|
|
credentialPublicKey: text().notNull(),
|
|
counter: integer().notNull(),
|
|
credentialDeviceType: text().notNull(),
|
|
credentialBackedUp: boolean().notNull(),
|
|
transports: text(),
|
|
}, (table) => [
|
|
foreignKey({
|
|
columns: [table.userId],
|
|
foreignColumns: [user.id],
|
|
name: "authenticator_userId_user_id_fk"
|
|
}).onDelete("cascade"),
|
|
primaryKey({ columns: [table.credentialId, table.userId], name: "authenticator_userId_credentialID_pk"}),
|
|
unique("authenticator_credentialID_unique").on(table.credentialId),
|
|
]);
|
|
|
|
export const account = pgTable("account", {
|
|
userId: text().notNull(),
|
|
type: text().notNull(),
|
|
provider: text().notNull(),
|
|
providerAccountId: text().notNull(),
|
|
refreshToken: text("refresh_token"),
|
|
accessToken: text("access_token"),
|
|
expiresAt: text("expires_at"),
|
|
tokenType: text("token_type"),
|
|
scope: text(),
|
|
idToken: text("id_token"),
|
|
sessionState: text("session_state"),
|
|
}, (table) => [
|
|
foreignKey({
|
|
columns: [table.userId],
|
|
foreignColumns: [user.id],
|
|
name: "account_userId_user_id_fk"
|
|
}).onDelete("cascade"),
|
|
primaryKey({ columns: [table.provider, table.providerAccountId], name: "account_provider_providerAccountId_pk"}),
|
|
]);
|