diff --git a/src/shared/db/relations.ts b/src/shared/db/relations.ts index e36aaa5..3096cc3 100644 --- a/src/shared/db/relations.ts +++ b/src/shared/db/relations.ts @@ -35,6 +35,8 @@ import { attendanceRecords, attendanceRules, passwordSecurity, + errorBookItems, + errorBookReviews, } from "./schema"; // --- Users & Roles Relations --- @@ -55,6 +57,8 @@ export const usersRelations = relations(users, ({ many, one }) => ({ receivedMessages: many(messages, { relationName: "message_receiver" }), notifications: many(messageNotifications), passwordSecurity: one(passwordSecurity), + errorBookItems: many(errorBookItems), + errorBookReviews: many(errorBookReviews), })); export const accountsRelations = relations(accounts, ({ one }) => ({ @@ -103,12 +107,15 @@ export const questionsRelations = relations(questions, ({ one, many }) => ({ children: many(questions, { relationName: "question_hierarchy", }), - + // Many-to-Many with Knowledge Points (Direct relation mapping) knowledgePoints: many(questionsToKnowledgePoints), - + // Usage in Exams examQuestions: many(examQuestions), + + // Error book items referencing this question + errorBookItems: many(errorBookItems), })); export const knowledgePointsRelations = relations(knowledgePoints, ({ one, many }) => ({ @@ -484,3 +491,32 @@ export const passwordSecurityRelations = relations(passwordSecurity, ({ one }) = references: [users.id], }), })); + +// --- Error Book Relations --- + +export const errorBookItemsRelations = relations(errorBookItems, ({ one, many }) => ({ + student: one(users, { + fields: [errorBookItems.studentId], + references: [users.id], + }), + question: one(questions, { + fields: [errorBookItems.questionId], + references: [questions.id], + }), + subject: one(subjects, { + fields: [errorBookItems.subjectId], + references: [subjects.id], + }), + reviews: many(errorBookReviews), +})); + +export const errorBookReviewsRelations = relations(errorBookReviews, ({ one }) => ({ + item: one(errorBookItems, { + fields: [errorBookReviews.itemId], + references: [errorBookItems.id], + }), + student: one(users, { + fields: [errorBookReviews.studentId], + references: [users.id], + }), +}));