Files
cfw-autumn/shared/db/auth-relations.ts
2026-01-28 15:17:13 +00:00

123 lines
3.0 KiB
TypeScript

import { relations } from "drizzle-orm";
import { organizations } from "../models/orgModels/orgTable.js";
import {
account,
invitation,
member,
oauthAccessToken,
oauthClient,
oauthConsent,
oauthRefreshToken,
session,
user,
} from "./auth-schema.js";
export const userRelations = relations(user, ({ many }) => ({
sessions: many(session),
accounts: many(account),
memberships: many(member),
invitations: many(invitation),
oauthClients: many(oauthClient),
oauthRefreshTokens: many(oauthRefreshToken),
oauthAccessTokens: many(oauthAccessToken),
oauthConsents: many(oauthConsent),
}));
const sessionRelations = relations(session, ({ one, many }) => ({
user: one(user, {
fields: [session.userId],
references: [user.id],
}),
oauthRefreshTokens: many(oauthRefreshToken),
oauthAccessTokens: many(oauthAccessToken),
}));
const accountRelations = relations(account, ({ one }) => ({
user: one(user, {
fields: [account.userId],
references: [user.id],
}),
}));
export const memberRelations = relations(member, ({ one }) => ({
organization: one(organizations, {
fields: [member.organizationId],
references: [organizations.id],
}),
user: one(user, {
fields: [member.userId],
references: [user.id],
}),
}));
export const inviteRelations = relations(invitation, ({ one }) => ({
organization: one(organizations, {
fields: [invitation.organizationId],
references: [organizations.id],
}),
inviter: one(user, {
fields: [invitation.inviterId],
references: [user.id],
}),
}));
// OAuth Provider relations
const oauthClientRelations = relations(oauthClient, ({ one, many }) => ({
user: one(user, {
fields: [oauthClient.userId],
references: [user.id],
}),
oauthRefreshTokens: many(oauthRefreshToken),
oauthAccessTokens: many(oauthAccessToken),
oauthConsents: many(oauthConsent),
}));
const oauthRefreshTokenRelations = relations(
oauthRefreshToken,
({ one, many }) => ({
oauthClient: one(oauthClient, {
fields: [oauthRefreshToken.clientId],
references: [oauthClient.clientId],
}),
session: one(session, {
fields: [oauthRefreshToken.sessionId],
references: [session.id],
}),
user: one(user, {
fields: [oauthRefreshToken.userId],
references: [user.id],
}),
oauthAccessTokens: many(oauthAccessToken),
}),
);
const oauthAccessTokenRelations = relations(oauthAccessToken, ({ one }) => ({
oauthClient: one(oauthClient, {
fields: [oauthAccessToken.clientId],
references: [oauthClient.clientId],
}),
session: one(session, {
fields: [oauthAccessToken.sessionId],
references: [session.id],
}),
user: one(user, {
fields: [oauthAccessToken.userId],
references: [user.id],
}),
oauthRefreshToken: one(oauthRefreshToken, {
fields: [oauthAccessToken.refreshId],
references: [oauthRefreshToken.id],
}),
}));
const oauthConsentRelations = relations(oauthConsent, ({ one }) => ({
oauthClient: one(oauthClient, {
fields: [oauthConsent.clientId],
references: [oauthClient.clientId],
}),
user: one(user, {
fields: [oauthConsent.userId],
references: [user.id],
}),
}));