Files
local-cal/drizzle/schema.ts

105 lines
2.3 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",
}),
],
);