import { relations } from "drizzle-orm";
import {
integer,
json,
pgEnum,
pgTable,
serial,
text,
timestamp,
uniqueIndex,
varchar,
} from "drizzle-orm/pg-core";
export const users = pgTable(
"users",
{
id: serial("id").primaryKey(),
name: varchar("name", { length: 256 }),
email: varchar("email", { length: 256 }).notNull(),
avatarUrl: text("avatar_url"),
},
(users) => {
return {
emailIndex: uniqueIndex("email_idx").on(users.email),
};
},
);
export const accountTypeEnum = pgEnum("account_type", ["discord"]);
export const accounts = pgTable("accounts", {
id: text("account_id").primaryKey(),
type: accountTypeEnum("account_type").notNull(),
accessToken: text("access_token").notNull(),
refreshToken: text("refresh_token").notNull(),
userId: integer("user_id")
.references(() => users.id)
.notNull(),
});
export const session = pgTable("session", {
id: text("id").primaryKey(),
data: json("data").notNull(),
expiresAt: timestamp("expires_at").notNull(),
});
export const userRelations = relations(users, ({ many }) => ({
accounts: many(accounts),
}));
export const accountsRelations = relations(accounts, ({ one }) => ({
user: one(users, {
fields: [accounts.userId],
references: [users.id],
}),
}));
import { relations } from "drizzle-orm";
import {
integer,
json,
pgEnum,
pgTable,
serial,
text,
timestamp,
uniqueIndex,
varchar,
} from "drizzle-orm/pg-core";
export const users = pgTable(
"users",
{
id: serial("id").primaryKey(),
name: varchar("name", { length: 256 }),
email: varchar("email", { length: 256 }).notNull(),
avatarUrl: text("avatar_url"),
},
(users) => {
return {
emailIndex: uniqueIndex("email_idx").on(users.email),
};
},
);
export const accountTypeEnum = pgEnum("account_type", ["discord"]);
export const accounts = pgTable("accounts", {
id: text("account_id").primaryKey(),
type: accountTypeEnum("account_type").notNull(),
accessToken: text("access_token").notNull(),
refreshToken: text("refresh_token").notNull(),
userId: integer("user_id")
.references(() => users.id)
.notNull(),
});
export const session = pgTable("session", {
id: text("id").primaryKey(),
data: json("data").notNull(),
expiresAt: timestamp("expires_at").notNull(),
});
export const userRelations = relations(users, ({ many }) => ({
accounts: many(accounts),
}));
export const accountsRelations = relations(accounts, ({ one }) => ({
user: one(users, {
fields: [accounts.userId],
references: [users.id],
}),
}));