Files
EpicNext-Cms/src/db/relations.ts
T
openhands beae86194d
CI / check (push) Successful in 29s
CI / release (push) Skipped
CI / deploy (push) Failing after 1m23s
fix: resolve biome lint errors in prisma-facade
- Fix noPrecisionLoss on BIGINT UNSIGNED max value (2^64-1) with biome-ignore comments
- Fix noThenProperty on custom thenable with biome-ignore comment
- Auto-format remaining files (biome check --write)
- Re-stage auto-fixed files from previous commit
2026-07-31 14:17:06 +02:00

159 lines
3.6 KiB
TypeScript

import { relations } from "drizzle-orm";
import {
AclModelPermission,
AclModelRole,
AclPermission,
AclRole,
AdminAuditLog,
User,
WebsiteEvent,
WebsiteEventPrize,
WebsiteEventRegistration,
WebsiteEventType,
WebsiteEventWinner,
WebsitePoll,
WebsitePollQuestion,
WebsitePollVote,
WebsiteTicket,
WebsiteTicketMessage,
} from "@/db/schema";
export const userRelations = relations(User, ({ many }) => ({
createdTickets: many(WebsiteTicket, { relationName: "ticketCreator" }),
assignedTickets: many(WebsiteTicket, { relationName: "ticketAssignee" }),
ticketMessages: many(WebsiteTicketMessage),
auditLogs: many(AdminAuditLog),
}));
export const websiteTicketRelations = relations(
WebsiteTicket,
({ one, many }) => ({
creator: one(User, {
fields: [WebsiteTicket.creatorId],
references: [User.id],
relationName: "ticketCreator",
}),
assignee: one(User, {
fields: [WebsiteTicket.assigneeId],
references: [User.id],
relationName: "ticketAssignee",
}),
messages: many(WebsiteTicketMessage),
}),
);
export const websiteTicketMessageRelations = relations(
WebsiteTicketMessage,
({ one }) => ({
ticket: one(WebsiteTicket, {
fields: [WebsiteTicketMessage.ticketId],
references: [WebsiteTicket.id],
}),
user: one(User, {
fields: [WebsiteTicketMessage.userId],
references: [User.id],
}),
}),
);
export const adminAuditLogRelations = relations(AdminAuditLog, ({ one }) => ({
user: one(User, {
fields: [AdminAuditLog.userId],
references: [User.id],
}),
}));
export const aclRoleRelations = relations(AclRole, ({ many }) => ({
rolePermissions: many(AclModelPermission),
modelRoles: many(AclModelRole),
}));
export const aclModelPermissionRelations = relations(
AclModelPermission,
({ one }) => ({
role: one(AclRole, {
fields: [AclModelPermission.modelId],
references: [AclRole.id],
}),
permission: one(AclPermission, {
fields: [AclModelPermission.permissionId],
references: [AclPermission.id],
}),
}),
);
export const websiteEventTypeRelations = relations(
WebsiteEventType,
({ many }) => ({
events: many(WebsiteEvent),
}),
);
export const websiteEventRelations = relations(
WebsiteEvent,
({ one, many }) => ({
type: one(WebsiteEventType, {
fields: [WebsiteEvent.typeId],
references: [WebsiteEventType.id],
}),
registrations: many(WebsiteEventRegistration),
prizes: many(WebsiteEventPrize),
winners: many(WebsiteEventWinner),
}),
);
export const websiteEventRegistrationRelations = relations(
WebsiteEventRegistration,
({ one }) => ({
event: one(WebsiteEvent, {
fields: [WebsiteEventRegistration.eventId],
references: [WebsiteEvent.id],
}),
}),
);
export const websiteEventPrizeRelations = relations(
WebsiteEventPrize,
({ one }) => ({
event: one(WebsiteEvent, {
fields: [WebsiteEventPrize.eventId],
references: [WebsiteEvent.id],
}),
}),
);
export const websiteEventWinnerRelations = relations(
WebsiteEventWinner,
({ one }) => ({
event: one(WebsiteEvent, {
fields: [WebsiteEventWinner.eventId],
references: [WebsiteEvent.id],
}),
}),
);
export const websitePollRelations = relations(WebsitePoll, ({ many }) => ({
questions: many(WebsitePollQuestion),
}));
export const websitePollQuestionRelations = relations(
WebsitePollQuestion,
({ one, many }) => ({
poll: one(WebsitePoll, {
fields: [WebsitePollQuestion.pollId],
references: [WebsitePoll.id],
}),
votes: many(WebsitePollVote),
}),
);
export const websitePollVoteRelations = relations(
WebsitePollVote,
({ one }) => ({
question: one(WebsitePollQuestion, {
fields: [WebsitePollVote.questionId],
references: [WebsitePollQuestion.id],
}),
}),
);