feat: enable hybrid local and remote module execution
This commit is contained in:
+96
-1
@@ -31,8 +31,10 @@ model User {
|
||||
platformControlSessions PlatformControlSession[]
|
||||
platformControlQueueEntries PlatformControlQueueEntry[]
|
||||
studioRepositories StudioRepository[]
|
||||
customModuleRepositories StudentCustomModuleRepository[]
|
||||
savedMaps StudentSavedMap[]
|
||||
customModules StudentCustomModule[]
|
||||
teamCustomModules TeamCustomModule[] @relation("TeamCustomModuleCreator")
|
||||
submissionScores SubmissionScore[]
|
||||
submissionTotalScores SubmissionTotalScore[]
|
||||
|
||||
@@ -77,6 +79,9 @@ model StudentGroup {
|
||||
platformControlSessions PlatformControlSession[]
|
||||
platformControlQueueEntries PlatformControlQueueEntry[]
|
||||
curriculumSettings InstructorCurriculumSetting[]
|
||||
teamStudioRepositories TeamStudioRepository[]
|
||||
teamCustomModuleRepositories TeamCustomModuleRepository[]
|
||||
teamCustomModules TeamCustomModule[]
|
||||
|
||||
@@unique([organizationName, name])
|
||||
@@index([organizationId])
|
||||
@@ -162,6 +167,7 @@ model Course {
|
||||
weekMaps CourseWeekMap[]
|
||||
savedMaps StudentSavedMap[]
|
||||
customModules StudentCustomModule[]
|
||||
teamCustomModules TeamCustomModule[]
|
||||
submissionScores SubmissionScore[]
|
||||
submissionTotalScores SubmissionTotalScore[]
|
||||
|
||||
@@ -267,8 +273,12 @@ model StudentSavedMap {
|
||||
viewerModel String @map("viewer_model")
|
||||
yamlPath String @map("yaml_path")
|
||||
pgmPath String @map("pgm_path")
|
||||
yamlUrl String? @map("yaml_url")
|
||||
pgmUrl String? @map("pgm_url")
|
||||
previewPgm String? @map("preview_pgm")
|
||||
databasePath String? @map("database_path")
|
||||
databaseUrl String? @map("database_url")
|
||||
runtimeKind String @default("SIMULATION") @map("runtime_kind")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
@@ -276,6 +286,7 @@ model StudentSavedMap {
|
||||
|
||||
@@unique([userId, courseId, week, yamlPath])
|
||||
@@index([userId, courseId, week, createdAt])
|
||||
@@index([userId, courseId, week, runtimeKind])
|
||||
@@map("student_saved_maps")
|
||||
}
|
||||
|
||||
@@ -291,16 +302,78 @@ model StudentCustomModule {
|
||||
dockerImage String? @map("docker_image")
|
||||
packageName String @map("package_name")
|
||||
launchFile String @map("launch_file")
|
||||
runtimeTarget String @default("LOCAL") @map("runtime_target")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
|
||||
repository StudentCustomModuleRepository?
|
||||
|
||||
@@unique([userId, courseId, week, folderName])
|
||||
@@unique([userId, courseId, week, folderName, runtimeTarget])
|
||||
@@index([userId, courseId, week, sortOrder])
|
||||
@@index([userId, courseId, week, runtimeTarget, sortOrder])
|
||||
@@map("student_custom_modules")
|
||||
}
|
||||
|
||||
model TeamCustomModule {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
groupId String @map("group_id") @db.Uuid
|
||||
creatorId String @map("creator_id") @db.Uuid
|
||||
courseId String @map("course_id") @db.Uuid
|
||||
week Int
|
||||
sortOrder Int @map("sort_order")
|
||||
category String
|
||||
name String
|
||||
folderName String @map("folder_name")
|
||||
dockerImage String? @map("docker_image")
|
||||
packageName String @map("package_name")
|
||||
launchFile String @map("launch_file")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
|
||||
group StudentGroup @relation(fields: [groupId], references: [id], onDelete: Cascade)
|
||||
creator User @relation("TeamCustomModuleCreator", fields: [creatorId], references: [id], onDelete: Cascade)
|
||||
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
|
||||
repository TeamCustomModuleRepository?
|
||||
|
||||
@@unique([groupId, courseId, week, folderName])
|
||||
@@index([groupId, courseId, week, sortOrder])
|
||||
@@map("team_custom_modules")
|
||||
}
|
||||
|
||||
model StudentCustomModuleRepository {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
userId String @map("user_id") @db.Uuid
|
||||
customModuleId String @unique @map("custom_module_id") @db.Uuid
|
||||
repoOwner String @map("repo_owner")
|
||||
repoName String @map("repo_name")
|
||||
repositoryUrl String @map("repository_url")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
customModule StudentCustomModule @relation(fields: [customModuleId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([userId])
|
||||
@@index([repoOwner, repoName])
|
||||
@@map("student_custom_module_repositories")
|
||||
}
|
||||
|
||||
model TeamCustomModuleRepository {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
groupId String @map("group_id") @db.Uuid
|
||||
customModuleId String @unique @map("custom_module_id") @db.Uuid
|
||||
repoOwner String @map("repo_owner")
|
||||
repoName String @map("repo_name")
|
||||
repositoryUrl String @map("repository_url")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
|
||||
group StudentGroup @relation(fields: [groupId], references: [id], onDelete: Cascade)
|
||||
customModule TeamCustomModule @relation(fields: [customModuleId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([groupId])
|
||||
@@index([repoOwner, repoName])
|
||||
@@map("team_custom_module_repositories")
|
||||
}
|
||||
|
||||
model InstructorCurriculumSetting {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
organizationId String? @map("organization_id") @db.Uuid
|
||||
@@ -333,6 +406,7 @@ model InstructorCurriculumWeekOverride {
|
||||
overview String?
|
||||
deliverable String?
|
||||
requiresSourceSubmission Boolean? @default(true) @map("requires_source_submission")
|
||||
isTeamProject Boolean? @default(false) @map("is_team_project")
|
||||
learningSteps Json? @map("learning_steps")
|
||||
topics Json?
|
||||
topicDetails Json? @map("topic_details")
|
||||
@@ -540,6 +614,7 @@ model CourseWeekModule {
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
|
||||
week CourseWeek @relation(fields: [weekId], references: [id], onDelete: Cascade)
|
||||
studioRepositories StudioRepository[]
|
||||
teamStudioRepositories TeamStudioRepository[]
|
||||
submissionScores SubmissionScore[]
|
||||
|
||||
@@unique([weekId, folderName])
|
||||
@@ -568,6 +643,26 @@ model StudioRepository {
|
||||
@@map("studio_repositories")
|
||||
}
|
||||
|
||||
model TeamStudioRepository {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
groupId String @map("group_id") @db.Uuid
|
||||
weekId String @map("week_id") @db.Uuid
|
||||
moduleId String @map("module_id") @db.Uuid
|
||||
repoOwner String @map("repo_owner")
|
||||
repoName String @map("repo_name")
|
||||
repositoryUrl String @map("repository_url")
|
||||
templateRepositoryUrl String @map("template_repository_url")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
|
||||
group StudentGroup @relation(fields: [groupId], references: [id], onDelete: Cascade)
|
||||
module CourseWeekModule @relation(fields: [moduleId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([groupId, moduleId])
|
||||
@@index([weekId])
|
||||
@@index([repoOwner, repoName])
|
||||
@@map("team_studio_repositories")
|
||||
}
|
||||
|
||||
model SubmissionScore {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
courseId String @map("course_id") @db.Uuid
|
||||
|
||||
Reference in New Issue
Block a user