From 43babc2a31cb76a603310b237d9e305658a9c113 Mon Sep 17 00:00:00 2001 From: dennis Date: Sun, 29 Dec 2024 16:46:32 +0100 Subject: [PATCH] add folder structure for Key Value DB --- shared/models/testcase.model.ts | 24 ++++++++++++++++++- .../repository/course.interface.repo.ts | 6 +++++ src/course/repository/course.repo.ts | 12 ++++++++++ src/exercise/exercise.ts | 2 +- .../repository/exercise.interface.repo.ts | 7 ++++++ src/exercise/repository/exercise.repo.ts | 12 ++++++++++ src/extension.ts | 2 +- .../repository/feedback.interface.repo.ts | 6 +++++ src/feedback/repository/feedback.repo.ts | 12 ++++++++++ .../participation.interface.repo.ts | 6 +++++ .../repository/participation.repo.ts | 12 ++++++++++ .../repository/result.interface.repo.ts | 6 +++++ src/result/repository/result.repo.ts | 12 ++++++++++ src/shared/{repository.ts => gitRepo.ts} | 0 .../repository/testcase.interface.repo.ts | 6 +++++ src/testcase/repository/testcase.repo.ts | 12 ++++++++++ 16 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 src/course/repository/course.interface.repo.ts create mode 100644 src/course/repository/course.repo.ts create mode 100644 src/exercise/repository/exercise.interface.repo.ts create mode 100644 src/exercise/repository/exercise.repo.ts create mode 100644 src/feedback/repository/feedback.interface.repo.ts create mode 100644 src/feedback/repository/feedback.repo.ts create mode 100644 src/participation/repository/participation.interface.repo.ts create mode 100644 src/participation/repository/participation.repo.ts create mode 100644 src/result/repository/result.interface.repo.ts create mode 100644 src/result/repository/result.repo.ts rename src/shared/{repository.ts => gitRepo.ts} (100%) create mode 100644 src/testcase/repository/testcase.interface.repo.ts create mode 100644 src/testcase/repository/testcase.repo.ts diff --git a/shared/models/testcase.model.ts b/shared/models/testcase.model.ts index a54fc6b..e445594 100644 --- a/shared/models/testcase.model.ts +++ b/shared/models/testcase.model.ts @@ -8,7 +8,7 @@ export enum TestCaseType { } export class TestCase { - id?: number; + id: number; testName?: string; weight?: number; bonusMultiplier?: number; @@ -17,4 +17,26 @@ export class TestCase { visibility?: Visibility; exercise?: ProgrammingExercise; type?: TestCaseType; + + constructor( + id: number, + testName?: string, + weight?: number, + bonusMultiplier?: number, + bonusPoints?: number, + active?: boolean, + visibility?: Visibility, + exercise?: ProgrammingExercise, + type?: TestCaseType + ){ + this.id = id; + this.testName = testName; + this.weight = weight; + this.bonusMultiplier = bonusMultiplier; + this.bonusPoints = bonusPoints; + this.active = active; + this.visibility = visibility; + this.exercise = exercise; + this.type = type; + } } \ No newline at end of file diff --git a/src/course/repository/course.interface.repo.ts b/src/course/repository/course.interface.repo.ts new file mode 100644 index 0000000..bd6cd87 --- /dev/null +++ b/src/course/repository/course.interface.repo.ts @@ -0,0 +1,6 @@ +import { Course } from "@shared/models/course.model"; + +export interface CourseDB { + getCourse(courseId: string): Promise; + saveCourse(course: Course): Promise; +} \ No newline at end of file diff --git a/src/course/repository/course.repo.ts b/src/course/repository/course.repo.ts new file mode 100644 index 0000000..80e0920 --- /dev/null +++ b/src/course/repository/course.repo.ts @@ -0,0 +1,12 @@ +import { Course } from "@shared/models/course.model"; +import { CourseDB } from "./course.interface.repo"; + +class CourseDBKeyValue implements CourseDB { + getCourse(courseId: string): Promise { + throw new Error("Method not implemented."); + } + + saveCourse(course: Course): Promise { + throw new Error("Method not implemented."); + } +} diff --git a/src/exercise/exercise.ts b/src/exercise/exercise.ts index 43480d0..6e515ec 100644 --- a/src/exercise/exercise.ts +++ b/src/exercise/exercise.ts @@ -9,7 +9,7 @@ import { start_exercise, } from "../participation/participation.api"; import { StudentParticipation } from "@shared/models/participation.model"; -import { cloneRepository } from "../shared/repository"; +import { cloneRepository } from "../shared/gitRepo"; import { NotAuthenticatedError } from "../authentication/not_authenticated.error"; import { Result } from "@shared/models/result.model"; import { fetch_course_exercise_projectKey } from "./exercise.api"; diff --git a/src/exercise/repository/exercise.interface.repo.ts b/src/exercise/repository/exercise.interface.repo.ts new file mode 100644 index 0000000..805f1c2 --- /dev/null +++ b/src/exercise/repository/exercise.interface.repo.ts @@ -0,0 +1,7 @@ +import { Course } from "@shared/models/course.model"; +import { Exercise } from "@shared/models/exercise.model"; + +export interface ExerciseDB { + getExercise(exerciseId: string): Promise; + saveExercise(exercise: Exercise): Promise; +} \ No newline at end of file diff --git a/src/exercise/repository/exercise.repo.ts b/src/exercise/repository/exercise.repo.ts new file mode 100644 index 0000000..cd9f743 --- /dev/null +++ b/src/exercise/repository/exercise.repo.ts @@ -0,0 +1,12 @@ +import { ExerciseDB } from "./exercise.interface.repo"; +import { Exercise } from "@shared/models/exercise.model"; + +class ExerciseDBKeyValue implements ExerciseDB { + getExercise(exerciseId: string): Promise { + throw new Error("Method not implemented."); + } + + saveExercise(exercise: Exercise): Promise { + throw new Error("Method not implemented."); + } +} \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index b69ffba..1a126e3 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -7,7 +7,7 @@ import { build_exercise_options, cloneCurrentExercise } from "./exercise/exercis import { SidebarProvider } from "./sidebar/sidebarProvider"; import { ArtemisAuthenticationProvider, AUTH_ID } from "./authentication/authentication_provider"; import { set_state, state } from "./shared/state"; -import { detectRepoCourseAndExercise, submitCurrentWorkspace } from "./shared/repository"; +import { detectRepoCourseAndExercise, submitCurrentWorkspace } from "./shared/gitRepo"; import { sync_problem_statement_with_workspace } from "./problemStatement/problem_statement"; import { NotAuthenticatedError } from "./authentication/not_authenticated.error"; import { initTheia, theiaEnv } from "./theia/theia"; diff --git a/src/feedback/repository/feedback.interface.repo.ts b/src/feedback/repository/feedback.interface.repo.ts new file mode 100644 index 0000000..b2c6a35 --- /dev/null +++ b/src/feedback/repository/feedback.interface.repo.ts @@ -0,0 +1,6 @@ +import { Feedback } from "@shared/models/feedback.model"; + +export interface FeedbackDB { + getFeedback(feedbackId: string): Promise; + saveFeedback(feedback: Feedback): Promise; +} diff --git a/src/feedback/repository/feedback.repo.ts b/src/feedback/repository/feedback.repo.ts new file mode 100644 index 0000000..82f3579 --- /dev/null +++ b/src/feedback/repository/feedback.repo.ts @@ -0,0 +1,12 @@ +import { Feedback } from "@shared/models/feedback.model"; +import { FeedbackDB } from "./feedback.interface.repo"; + +class FeedbackDBKeyValue implements FeedbackDB { + getFeedback(feedbackId: string): Promise { + throw new Error("Method not implemented."); + } + + saveFeedback(feedback: Feedback): Promise { + throw new Error("Method not implemented."); + } +} diff --git a/src/participation/repository/participation.interface.repo.ts b/src/participation/repository/participation.interface.repo.ts new file mode 100644 index 0000000..f9d9bba --- /dev/null +++ b/src/participation/repository/participation.interface.repo.ts @@ -0,0 +1,6 @@ +import { StudentParticipation } from "@shared/models/participation.model"; + +export interface ParticipationDB { + getParticipation(participationId: string): Promise; + saveParticipation(participation: StudentParticipation): Promise; +} \ No newline at end of file diff --git a/src/participation/repository/participation.repo.ts b/src/participation/repository/participation.repo.ts new file mode 100644 index 0000000..0e767c9 --- /dev/null +++ b/src/participation/repository/participation.repo.ts @@ -0,0 +1,12 @@ +import { StudentParticipation } from "@shared/models/participation.model"; +import { ParticipationDB } from "./participation.interface.repo"; + +class ParticipationDBKeyValue implements ParticipationDB { + getParticipation(participationId: string): Promise { + throw new Error("Method not implemented."); + } + + saveParticipation(participation: StudentParticipation): Promise { + throw new Error("Method not implemented."); + } +} \ No newline at end of file diff --git a/src/result/repository/result.interface.repo.ts b/src/result/repository/result.interface.repo.ts new file mode 100644 index 0000000..d5582a4 --- /dev/null +++ b/src/result/repository/result.interface.repo.ts @@ -0,0 +1,6 @@ +import { Result } from "@shared/models/result.model"; + +export interface ResultDB { + getResult(resultId: string): Promise; + saveResult(result: Result): Promise; +} diff --git a/src/result/repository/result.repo.ts b/src/result/repository/result.repo.ts new file mode 100644 index 0000000..417d4ce --- /dev/null +++ b/src/result/repository/result.repo.ts @@ -0,0 +1,12 @@ +import { Result } from "@shared/models/result.model"; +import { ResultDB } from "./result.interface.repo"; + +class ResultDBKeyValue implements ResultDB { + getResult(resultId: string): Promise { + throw new Error("Method not implemented."); + } + + saveResult(result: Result): Promise { + throw new Error("Method not implemented."); + } +} diff --git a/src/shared/repository.ts b/src/shared/gitRepo.ts similarity index 100% rename from src/shared/repository.ts rename to src/shared/gitRepo.ts diff --git a/src/testcase/repository/testcase.interface.repo.ts b/src/testcase/repository/testcase.interface.repo.ts new file mode 100644 index 0000000..54ee2df --- /dev/null +++ b/src/testcase/repository/testcase.interface.repo.ts @@ -0,0 +1,6 @@ +import { TestCase } from "@shared/models/testcase.model"; + +export interface TestCaseDB { + getTestCase(testCaseId: string): Promise; + saveTestCase(testCase: TestCase): Promise; +} diff --git a/src/testcase/repository/testcase.repo.ts b/src/testcase/repository/testcase.repo.ts new file mode 100644 index 0000000..a3bcdad --- /dev/null +++ b/src/testcase/repository/testcase.repo.ts @@ -0,0 +1,12 @@ +import { TestCase } from "@shared/models/testcase.model"; +import { TestCaseDB } from "./testcase.interface.repo"; + +class TestCaseDBKeyValue implements TestCaseDB { + getTestCase(testCaseId: string): Promise { + throw new Error("Method not implemented."); + } + + saveTestCase(testCase: TestCase): Promise { + throw new Error("Method not implemented."); +} +}