Portfolio/Websites/jefes-nextjs/db/schema.ts
2023-12-07 22:38:51 -08:00

91 lines
2.8 KiB
TypeScript

// db/schema.ts
// pnpm drizzle-kit generate:mysql
// pnpm tsx db/migrate.ts
// import {
// index,
// int,
// mysqlTable,
// bigint,
// varchar,
// timestamp,
// mysqlSchema,
// } from "drizzle-orm/mysql-core";
// export const mySchema = mysqlSchema("drizzle_jefes") for creating a new db
// export const users = mysqlTable("users", {
// id: int("id").primaryKey().autoincrement(),
// email: varchar("email", { length: 256 }).notNull(),
// password: varchar("password", { length: 256 }).notNull(),
// });
// export const menuItems = mysqlTable("menu_item", {
// id: bigint("id", { mode: "number" }).primaryKey().autoincrement(),
// itemName: varchar("item_name", { length: 256 }),
// itemDescription: varchar("item_description", { length: 256 }),
// });
import {
int,
timestamp,
mysqlTable,
primaryKey,
varchar,
} from "drizzle-orm/mysql-core";
import type { AdapterAccount } from "@auth/core/adapters";
export const users = mysqlTable("user", {
id: varchar("id", { length: 255 }).notNull().primaryKey(),
name: varchar("name", { length: 255 }),
email: varchar("email", { length: 255 }).notNull(),
emailVerified: timestamp("emailVerified", {
mode: "date",
fsp: 3,
}).defaultNow(),
image: varchar("image", { length: 255 }),
});
export const accounts = mysqlTable(
"account",
{
userId: varchar("userId", { length: 255 })
.notNull()
.references(() => users.id, { onDelete: "cascade" }),
type: varchar("type", { length: 255 })
.$type<AdapterAccount["type"]>()
.notNull(),
provider: varchar("provider", { length: 255 }).notNull(),
providerAccountId: varchar("providerAccountId", { length: 255 }).notNull(),
refresh_token: varchar("refresh_token", { length: 255 }),
access_token: varchar("access_token", { length: 255 }),
expires_at: int("expires_at"),
token_type: varchar("token_type", { length: 255 }),
scope: varchar("scope", { length: 255 }),
id_token: varchar("id_token", { length: 2048 }),
session_state: varchar("session_state", { length: 255 }),
},
(account) => ({
compoundKey: primaryKey(account.provider, account.providerAccountId),
})
);
export const sessions = mysqlTable("session", {
sessionToken: varchar("sessionToken", { length: 255 }).notNull().primaryKey(),
userId: varchar("userId", { length: 255 })
.notNull()
.references(() => users.id, { onDelete: "cascade" }),
expires: timestamp("expires", { mode: "date" }).notNull(),
});
export const verificationTokens = mysqlTable(
"verificationToken",
{
identifier: varchar("identifier", { length: 255 }).notNull(),
token: varchar("token", { length: 255 }).notNull(),
expires: timestamp("expires", { mode: "date" }).notNull(),
},
(vt) => ({
compoundKey: primaryKey(vt.identifier, vt.token),
})
);