- 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
159 lines
3.6 KiB
TypeScript
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],
|
|
}),
|
|
}),
|
|
);
|