pkgs/db/src/schemas/index.ts (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import { defineRelations } from "drizzle-orm";
import * as s from "drizzle-orm/sqlite-core";
export const actors = s.sqliteTable("actors", {
id: s.integer("id").primaryKey({ autoIncrement: true }),
discordId: s.text("discord_id").unique(),
displayName: s.text("display_name"),
username: s.text("username"),
avatar: s.text("avatar"),
moderator: s.integer("moderator", { mode: "boolean" }),
createdAt: s.integer("created_at", { mode: "timestamp" }).notNull(),
updatedAt: s.integer("updated_at", { mode: "timestamp" }).notNull(),
deletedAt: s.integer("deleted_at", { mode: "timestamp" }),
});
export const sessions = s.sqliteTable("sessions", {
id: s.text("id").primaryKey(),
userId: s
.integer("user_id")
.notNull()
.references(() => actors.id),
accessToken: s.text("access_token").notNull(),
refreshToken: s.text("refresh_token").notNull(),
scope: s.text("scope"),
tokenType: s.text("token_type"),
expiresAt: s.integer("expires_at", { mode: "timestamp" }).notNull(),
createdAt: s.integer("created_at", { mode: "timestamp" }).notNull(),
});
export const actorRelationships = defineRelations({ actors, sessions }, (r) => ({
actors: {
sessions: r.many.sessions({
from: r.actors.id,
to: r.sessions.userId,
}),
},
sessions: {
actor: r.one.actors({
from: r.sessions.userId,
to: r.actors.id,
}),
},
}));
|