539 lines
14 KiB
TypeScript
539 lines
14 KiB
TypeScript
import {
|
|
account,
|
|
analyticsLoginEvents,
|
|
appsPoll,
|
|
appsPollOption,
|
|
appsPollSubmission,
|
|
asset,
|
|
assetUsage,
|
|
communityAnswer,
|
|
communityQuestion,
|
|
course,
|
|
courseNewsfeed,
|
|
courseNewsfeedComment,
|
|
courseSection,
|
|
exercise,
|
|
group,
|
|
groupAttendance,
|
|
groupmember,
|
|
lesson,
|
|
lessonComment,
|
|
lessonCompletion,
|
|
lessonLanguage,
|
|
lessonLanguageHistory,
|
|
option,
|
|
organization,
|
|
organizationContacts,
|
|
organizationEmaillist,
|
|
organizationPlan,
|
|
organizationmember,
|
|
profile,
|
|
question,
|
|
questionAnswer,
|
|
questionType,
|
|
quiz,
|
|
quizPlay,
|
|
role,
|
|
session,
|
|
ssoProvider,
|
|
submission,
|
|
submissionstatus,
|
|
tag,
|
|
tagAssignment,
|
|
tagGroup,
|
|
user
|
|
} from './schema';
|
|
|
|
import { relations } from 'drizzle-orm/relations';
|
|
|
|
export const userRelations = relations(user, ({ many }) => ({
|
|
sessions: many(session),
|
|
accounts: many(account),
|
|
ssoProviders: many(ssoProvider)
|
|
}));
|
|
|
|
export const sessionRelations = relations(session, ({ one }) => ({
|
|
user: one(user, {
|
|
fields: [session.userId],
|
|
references: [user.id]
|
|
})
|
|
}));
|
|
|
|
export const accountRelations = relations(account, ({ one }) => ({
|
|
user: one(user, {
|
|
fields: [account.userId],
|
|
references: [user.id]
|
|
})
|
|
}));
|
|
|
|
export const ssoProviderRelations = relations(ssoProvider, ({ one }) => ({
|
|
user: one(user, {
|
|
fields: [ssoProvider.userId],
|
|
references: [user.id]
|
|
})
|
|
}));
|
|
|
|
export const analyticsLoginEventsRelations = relations(analyticsLoginEvents, ({ one }) => ({
|
|
usersInAuth: one(user, {
|
|
fields: [analyticsLoginEvents.userId],
|
|
references: [user.id]
|
|
})
|
|
}));
|
|
|
|
export const usersInAuthRelations = relations(user, ({ many }) => ({
|
|
analyticsLoginEvents: many(analyticsLoginEvents),
|
|
profiles: many(profile)
|
|
}));
|
|
|
|
export const courseSectionRelations = relations(courseSection, ({ one, many }) => ({
|
|
course: one(course, {
|
|
fields: [courseSection.courseId],
|
|
references: [course.id]
|
|
}),
|
|
lessons: many(lesson)
|
|
}));
|
|
|
|
export const courseRelations = relations(course, ({ one, many }) => ({
|
|
courseSections: many(courseSection),
|
|
groupAttendances: many(groupAttendance),
|
|
submissions: many(submission),
|
|
group: one(group, {
|
|
fields: [course.groupId],
|
|
references: [group.id]
|
|
}),
|
|
appsPolls: many(appsPoll),
|
|
lessons: many(lesson),
|
|
communityQuestions: many(communityQuestion),
|
|
courseNewsfeeds: many(courseNewsfeed),
|
|
tagAssignments: many(tagAssignment)
|
|
}));
|
|
|
|
export const groupRelations = relations(group, ({ one, many }) => ({
|
|
organization: one(organization, {
|
|
fields: [group.organizationId],
|
|
references: [organization.id]
|
|
}),
|
|
courses: many(course),
|
|
groupmembers: many(groupmember)
|
|
}));
|
|
|
|
export const organizationRelations = relations(organization, ({ one, many }) => ({
|
|
groups: many(group),
|
|
assets: many(asset),
|
|
assetUsages: many(assetUsage),
|
|
organizationContacts: many(organizationContacts),
|
|
quizzes: many(quiz),
|
|
organizationEmaillists: many(organizationEmaillist),
|
|
communityQuestions: many(communityQuestion),
|
|
organizationPlans: many(organizationPlan),
|
|
organizationmembers: many(organizationmember),
|
|
tagGroups: many(tagGroup),
|
|
tags: many(tag),
|
|
parentOrganization: one(organization, {
|
|
fields: [organization.parentOrganizationId],
|
|
references: [organization.id],
|
|
relationName: 'organizationAccount'
|
|
}),
|
|
childWorkspaces: many(organization, { relationName: 'organizationAccount' })
|
|
}));
|
|
|
|
export const tagGroupRelations = relations(tagGroup, ({ one, many }) => ({
|
|
organization: one(organization, {
|
|
fields: [tagGroup.organizationId],
|
|
references: [organization.id]
|
|
}),
|
|
tags: many(tag)
|
|
}));
|
|
|
|
export const tagRelations = relations(tag, ({ one, many }) => ({
|
|
organization: one(organization, {
|
|
fields: [tag.organizationId],
|
|
references: [organization.id]
|
|
}),
|
|
group: one(tagGroup, {
|
|
fields: [tag.groupId],
|
|
references: [tagGroup.id]
|
|
}),
|
|
assignments: many(tagAssignment)
|
|
}));
|
|
|
|
export const tagAssignmentRelations = relations(tagAssignment, ({ one }) => ({
|
|
tag: one(tag, {
|
|
fields: [tagAssignment.tagId],
|
|
references: [tag.id]
|
|
}),
|
|
course: one(course, {
|
|
fields: [tagAssignment.courseId],
|
|
references: [course.id]
|
|
})
|
|
}));
|
|
|
|
export const groupAttendanceRelations = relations(groupAttendance, ({ one }) => ({
|
|
course: one(course, {
|
|
fields: [groupAttendance.courseId],
|
|
references: [course.id]
|
|
}),
|
|
groupmember: one(groupmember, {
|
|
fields: [groupAttendance.studentId],
|
|
references: [groupmember.id]
|
|
})
|
|
}));
|
|
|
|
export const groupmemberRelations = relations(groupmember, ({ one, many }) => ({
|
|
groupAttendances: many(groupAttendance),
|
|
lessonComments: many(lessonComment),
|
|
submissions: many(submission),
|
|
appsPolls: many(appsPoll),
|
|
appsPollSubmissions: many(appsPollSubmission),
|
|
group: one(group, {
|
|
fields: [groupmember.groupId],
|
|
references: [group.id]
|
|
}),
|
|
profile: one(profile, {
|
|
fields: [groupmember.profileId],
|
|
references: [profile.id]
|
|
}),
|
|
role: one(role, {
|
|
fields: [groupmember.roleId],
|
|
references: [role.id]
|
|
}),
|
|
courseNewsfeeds: many(courseNewsfeed),
|
|
courseNewsfeedComments: many(courseNewsfeedComment),
|
|
questionAnswers: many(questionAnswer)
|
|
}));
|
|
|
|
export const appsPollOptionRelations = relations(appsPollOption, ({ one, many }) => ({
|
|
appsPoll: one(appsPoll, {
|
|
fields: [appsPollOption.pollId],
|
|
references: [appsPoll.id]
|
|
}),
|
|
appsPollSubmissions: many(appsPollSubmission)
|
|
}));
|
|
|
|
export const appsPollRelations = relations(appsPoll, ({ one, many }) => ({
|
|
appsPollOptions: many(appsPollOption),
|
|
groupmember: one(groupmember, {
|
|
fields: [appsPoll.authorId],
|
|
references: [groupmember.id]
|
|
}),
|
|
course: one(course, {
|
|
fields: [appsPoll.courseId],
|
|
references: [course.id]
|
|
}),
|
|
appsPollSubmissions: many(appsPollSubmission)
|
|
}));
|
|
|
|
export const profileRelations = relations(profile, ({ one, many }) => ({
|
|
usersInAuth: one(user, {
|
|
fields: [profile.id],
|
|
references: [user.id]
|
|
}),
|
|
assets: many(asset),
|
|
assetUsages: many(assetUsage),
|
|
lessons: many(lesson),
|
|
groupmembers: many(groupmember),
|
|
lessonCompletions: many(lessonCompletion),
|
|
communityAnswers: many(communityAnswer),
|
|
communityQuestions: many(communityQuestion),
|
|
organizationmembers: many(organizationmember)
|
|
}));
|
|
|
|
export const optionRelations = relations(option, ({ one }) => ({
|
|
question: one(question, {
|
|
fields: [option.questionId],
|
|
references: [question.id]
|
|
})
|
|
}));
|
|
|
|
export const questionRelations = relations(question, ({ one, many }) => ({
|
|
options: many(option),
|
|
exercise: one(exercise, {
|
|
fields: [question.exerciseId],
|
|
references: [exercise.id]
|
|
}),
|
|
questionType: one(questionType, {
|
|
fields: [question.questionTypeId],
|
|
references: [questionType.id]
|
|
}),
|
|
questionAnswers: many(questionAnswer)
|
|
}));
|
|
|
|
export const quizPlayRelations = relations(quizPlay, ({ one }) => ({
|
|
quiz: one(quiz, {
|
|
fields: [quizPlay.quizId],
|
|
references: [quiz.id]
|
|
})
|
|
}));
|
|
|
|
export const quizRelations = relations(quiz, ({ one, many }) => ({
|
|
quizPlays: many(quizPlay),
|
|
organization: one(organization, {
|
|
fields: [quiz.organizationId],
|
|
references: [organization.id]
|
|
})
|
|
}));
|
|
|
|
export const organizationContactsRelations = relations(organizationContacts, ({ one }) => ({
|
|
organization: one(organization, {
|
|
fields: [organizationContacts.organizationId],
|
|
references: [organization.id]
|
|
})
|
|
}));
|
|
|
|
export const lessonCommentRelations = relations(lessonComment, ({ one }) => ({
|
|
groupmember: one(groupmember, {
|
|
fields: [lessonComment.groupmemberId],
|
|
references: [groupmember.id]
|
|
}),
|
|
lesson: one(lesson, {
|
|
fields: [lessonComment.lessonId],
|
|
references: [lesson.id]
|
|
})
|
|
}));
|
|
|
|
export const lessonRelations = relations(lesson, ({ one, many }) => ({
|
|
lessonComments: many(lessonComment),
|
|
course: one(course, {
|
|
fields: [lesson.courseId],
|
|
references: [course.id]
|
|
}),
|
|
profile: one(profile, {
|
|
fields: [lesson.teacherId],
|
|
references: [profile.id]
|
|
}),
|
|
courseSection: one(courseSection, {
|
|
fields: [lesson.sectionId],
|
|
references: [courseSection.id]
|
|
}),
|
|
exercises: many(exercise),
|
|
lessonCompletions: many(lessonCompletion),
|
|
lessonLanguages: many(lessonLanguage)
|
|
}));
|
|
|
|
export const assetRelations = relations(asset, ({ one, many }) => ({
|
|
organization: one(organization, {
|
|
fields: [asset.organizationId],
|
|
references: [organization.id]
|
|
}),
|
|
createdByProfile: one(profile, {
|
|
fields: [asset.createdByProfileId],
|
|
references: [profile.id]
|
|
}),
|
|
usages: many(assetUsage)
|
|
}));
|
|
|
|
export const assetUsageRelations = relations(assetUsage, ({ one }) => ({
|
|
organization: one(organization, {
|
|
fields: [assetUsage.organizationId],
|
|
references: [organization.id]
|
|
}),
|
|
asset: one(asset, {
|
|
fields: [assetUsage.assetId],
|
|
references: [asset.id]
|
|
}),
|
|
createdByProfile: one(profile, {
|
|
fields: [assetUsage.createdByProfileId],
|
|
references: [profile.id]
|
|
})
|
|
}));
|
|
|
|
export const submissionRelations = relations(submission, ({ one, many }) => ({
|
|
course: one(course, {
|
|
fields: [submission.courseId],
|
|
references: [course.id]
|
|
}),
|
|
exercise: one(exercise, {
|
|
fields: [submission.exerciseId],
|
|
references: [exercise.id]
|
|
}),
|
|
submissionstatus: one(submissionstatus, {
|
|
fields: [submission.statusId],
|
|
references: [submissionstatus.id]
|
|
}),
|
|
groupmember: one(groupmember, {
|
|
fields: [submission.submittedBy],
|
|
references: [groupmember.id]
|
|
}),
|
|
questionAnswers: many(questionAnswer)
|
|
}));
|
|
|
|
export const exerciseRelations = relations(exercise, ({ one, many }) => ({
|
|
submissions: many(submission),
|
|
lesson: one(lesson, {
|
|
fields: [exercise.lessonId],
|
|
references: [lesson.id]
|
|
}),
|
|
course: one(course, {
|
|
fields: [exercise.courseId],
|
|
references: [course.id]
|
|
}),
|
|
section: one(courseSection, {
|
|
fields: [exercise.sectionId],
|
|
references: [courseSection.id]
|
|
}),
|
|
questions: many(question)
|
|
}));
|
|
|
|
export const submissionstatusRelations = relations(submissionstatus, ({ many }) => ({
|
|
submissions: many(submission)
|
|
}));
|
|
|
|
export const organizationEmaillistRelations = relations(organizationEmaillist, ({ one }) => ({
|
|
organization: one(organization, {
|
|
fields: [organizationEmaillist.organizationId],
|
|
references: [organization.id]
|
|
})
|
|
}));
|
|
|
|
export const appsPollSubmissionRelations = relations(appsPollSubmission, ({ one }) => ({
|
|
appsPoll: one(appsPoll, {
|
|
fields: [appsPollSubmission.pollId],
|
|
references: [appsPoll.id]
|
|
}),
|
|
appsPollOption: one(appsPollOption, {
|
|
fields: [appsPollSubmission.pollOptionId],
|
|
references: [appsPollOption.id]
|
|
}),
|
|
groupmember: one(groupmember, {
|
|
fields: [appsPollSubmission.selectedById],
|
|
references: [groupmember.id]
|
|
})
|
|
}));
|
|
|
|
export const roleRelations = relations(role, ({ many }) => ({
|
|
groupmembers: many(groupmember),
|
|
organizationmembers: many(organizationmember)
|
|
}));
|
|
|
|
export const lessonCompletionRelations = relations(lessonCompletion, ({ one }) => ({
|
|
lesson: one(lesson, {
|
|
fields: [lessonCompletion.lessonId],
|
|
references: [lesson.id]
|
|
}),
|
|
profile: one(profile, {
|
|
fields: [lessonCompletion.profileId],
|
|
references: [profile.id]
|
|
})
|
|
}));
|
|
|
|
export const communityAnswerRelations = relations(communityAnswer, ({ one }) => ({
|
|
organizationmember: one(organizationmember, {
|
|
fields: [communityAnswer.authorId],
|
|
references: [organizationmember.id]
|
|
}),
|
|
profile: one(profile, {
|
|
fields: [communityAnswer.authorProfileId],
|
|
references: [profile.id]
|
|
}),
|
|
communityQuestion: one(communityQuestion, {
|
|
fields: [communityAnswer.questionId],
|
|
references: [communityQuestion.id]
|
|
})
|
|
}));
|
|
|
|
export const organizationmemberRelations = relations(organizationmember, ({ one, many }) => ({
|
|
communityAnswers: many(communityAnswer),
|
|
communityQuestions: many(communityQuestion),
|
|
organizationPlans: many(organizationPlan),
|
|
organization: one(organization, {
|
|
fields: [organizationmember.organizationId],
|
|
references: [organization.id]
|
|
}),
|
|
profile: one(profile, {
|
|
fields: [organizationmember.profileId],
|
|
references: [profile.id]
|
|
}),
|
|
role: one(role, {
|
|
fields: [organizationmember.roleId],
|
|
references: [role.id]
|
|
})
|
|
}));
|
|
|
|
export const communityQuestionRelations = relations(communityQuestion, ({ one, many }) => ({
|
|
communityAnswers: many(communityAnswer),
|
|
organizationmember: one(organizationmember, {
|
|
fields: [communityQuestion.authorId],
|
|
references: [organizationmember.id]
|
|
}),
|
|
profile: one(profile, {
|
|
fields: [communityQuestion.authorProfileId],
|
|
references: [profile.id]
|
|
}),
|
|
course: one(course, {
|
|
fields: [communityQuestion.courseId],
|
|
references: [course.id]
|
|
}),
|
|
organization: one(organization, {
|
|
fields: [communityQuestion.organizationId],
|
|
references: [organization.id]
|
|
})
|
|
}));
|
|
|
|
export const courseNewsfeedRelations = relations(courseNewsfeed, ({ one, many }) => ({
|
|
groupmember: one(groupmember, {
|
|
fields: [courseNewsfeed.authorId],
|
|
references: [groupmember.id]
|
|
}),
|
|
course: one(course, {
|
|
fields: [courseNewsfeed.courseId],
|
|
references: [course.id]
|
|
}),
|
|
courseNewsfeedComments: many(courseNewsfeedComment)
|
|
}));
|
|
|
|
export const courseNewsfeedCommentRelations = relations(courseNewsfeedComment, ({ one }) => ({
|
|
groupmember: one(groupmember, {
|
|
fields: [courseNewsfeedComment.authorId],
|
|
references: [groupmember.id]
|
|
}),
|
|
courseNewsfeed: one(courseNewsfeed, {
|
|
fields: [courseNewsfeedComment.courseNewsfeedId],
|
|
references: [courseNewsfeed.id]
|
|
})
|
|
}));
|
|
|
|
export const organizationPlanRelations = relations(organizationPlan, ({ one }) => ({
|
|
organization: one(organization, {
|
|
fields: [organizationPlan.orgId],
|
|
references: [organization.id]
|
|
}),
|
|
organizationmember: one(organizationmember, {
|
|
fields: [organizationPlan.triggeredBy],
|
|
references: [organizationmember.id]
|
|
})
|
|
}));
|
|
|
|
export const lessonLanguageRelations = relations(lessonLanguage, ({ one, many }) => ({
|
|
lesson: one(lesson, {
|
|
fields: [lessonLanguage.lessonId],
|
|
references: [lesson.id]
|
|
}),
|
|
lessonLanguageHistories: many(lessonLanguageHistory)
|
|
}));
|
|
|
|
export const lessonLanguageHistoryRelations = relations(lessonLanguageHistory, ({ one }) => ({
|
|
lessonLanguage: one(lessonLanguage, {
|
|
fields: [lessonLanguageHistory.lessonLanguageId],
|
|
references: [lessonLanguage.id]
|
|
})
|
|
}));
|
|
|
|
export const questionTypeRelations = relations(questionType, ({ many }) => ({
|
|
questions: many(question)
|
|
}));
|
|
|
|
export const questionAnswerRelations = relations(questionAnswer, ({ one }) => ({
|
|
groupmember: one(groupmember, {
|
|
fields: [questionAnswer.groupMemberId],
|
|
references: [groupmember.id]
|
|
}),
|
|
question: one(question, {
|
|
fields: [questionAnswer.questionId],
|
|
references: [question.id]
|
|
}),
|
|
submission: one(submission, {
|
|
fields: [questionAnswer.submissionId],
|
|
references: [submission.id]
|
|
})
|
|
}));
|