Skip to content

Commit

Permalink
Have DTOs extend BaseModel
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelOwenDyer committed Feb 15, 2024
1 parent e7c74f2 commit 26e86ac
Show file tree
Hide file tree
Showing 6 changed files with 120 additions and 100 deletions.
52 changes: 26 additions & 26 deletions app/domain/codehint.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
class ProgrammingExerciseSolutionEntry:
def __init__(
self,
file_path: str,
previous_line: int,
line: int,
previous_code: str,
code: str,
):
self.file_path = file_path
self.previous_line = previous_line
self.line = line
self.previous_code = previous_code
self.code = code
from pydantic import BaseModel


class CodeHint:
def __init__(
self,
title: str,
description: str,
content: str,
solution_entries: [ProgrammingExerciseSolutionEntry],
):
self.title = title
self.description = description
self.content = content
self.solution_entries = solution_entries
class ProgrammingExerciseSolutionEntry(BaseModel):
file_path: str
previous_line: int
line: int
previous_code: str
code: str

def __str__(self):
return (
f'ProgrammingExerciseSolutionEntry(file_path="{self.file_path}", previous_line={self.previous_line}, '
f'line={self.line}, previous_code="{self.previous_code}", code="{self.code}")'
)


class CodeHint(BaseModel):
title: str
description: str
content: str
solution_entries: [ProgrammingExerciseSolutionEntry]

def __str__(self):
return (
f'CodeHint(title="{self.title}", description="{self.description}", content="{self.content}", '
f"solution_entries={self.solution_entries})"
)
13 changes: 9 additions & 4 deletions app/domain/course.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
class Course:
def __init__(self, title, description):
self.title = title
self.description = description
from pydantic import BaseModel


class Course(BaseModel):
title: str
description: str

def __str__(self):
return f'Course(title="{self.title}", description="{self.description}")'
101 changes: 51 additions & 50 deletions app/domain/dtos.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from pydantic import BaseModel

from domain import (
Course,
ProgrammingExercise,
Expand All @@ -7,53 +9,52 @@
)


class ProgrammingExerciseTutorChatDTO:
def __init__(
self,
course: Course,
exercise: ProgrammingExercise,
submission: ProgrammingSubmission,
chat_history: [IrisMessage],
):
self.course = course
self.exercise = exercise
self.submission = submission
self.chat_history = chat_history


class CodeEditorChatDTO:
def __init__(
self,
problem_statement: str,
solution_repository: dict[str, str],
template_repository: dict[str, str],
test_repository: dict[str, str],
chat_history: [IrisMessage],
):
self.problem_statement = problem_statement
self.solution_repository = solution_repository
self.template_repository = template_repository
self.test_repository = test_repository
self.chat_history = chat_history


class CodeEditorAdaptDTO:
def __init__(
self,
problem_statement: str,
solution_repository: dict[str, str],
template_repository: dict[str, str],
test_repository: dict[str, str],
instructions: str,
):
self.problem_statement = problem_statement
self.solution_repository = solution_repository
self.template_repository = template_repository
self.test_repository = test_repository
self.chat_history = instructions


class HestiaDTO:
def __init__(self, code_hint: CodeHint, exercise: ProgrammingExercise):
self.code_hint = code_hint
self.exercise = exercise
class ProgrammingExerciseTutorChatDTO(BaseModel):
course: Course
exercise: ProgrammingExercise
submission: ProgrammingSubmission
chat_history: [IrisMessage]

def __str__(self):
return (
f"ProgrammingExerciseTutorChatDTO(course={self.course}, exercise={self.exercise}, "
f"submission={self.submission}, chat_history={self.chat_history})"
)


class CodeEditorChatDTO(BaseModel):
problem_statement: str
solution_repository: dict[str, str]
template_repository: dict[str, str]
test_repository: dict[str, str]
chat_history: [IrisMessage]

def __str__(self):
return (
f'CodeEditorChatDTO(problem_statement="{self.problem_statement}", '
f"solution_repository={self.solution_repository}, template_repository={self.template_repository}, "
f"test_repository={self.test_repository}, chat_history={self.chat_history})"
)


class CodeEditorAdaptDTO(BaseModel):
problem_statement: str
solution_repository: dict[str, str]
template_repository: dict[str, str]
test_repository: dict[str, str]
instructions: str

def __str__(self):
return (
f'CodeEditorAdaptDTO(problem_statement="{self.problem_statement}", '
f"solution_repository={self.solution_repository}, template_repository={self.template_repository}, "
f'test_repository={self.test_repository}, instructions="{self.instructions}")'
)


class HestiaDTO(BaseModel):
code_hint: CodeHint
exercise: ProgrammingExercise

def __str__(self):
return f"HestiaDTO(code_hint={self.code_hint}, exercise={self.exercise})"
13 changes: 9 additions & 4 deletions app/domain/exercise.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
class ProgrammingExercise:
def __init__(self, title: str, problem_statement: str):
self.title = title
self.problem_statement = problem_statement
from pydantic import BaseModel


class ProgrammingExercise(BaseModel):
title: str
problem_statement: str

def __str__(self):
return f'ProgrammingExercise(title="{self.title}", problem_statement="{self.problem_statement}")'
7 changes: 4 additions & 3 deletions app/domain/message.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
from enum import Enum

from pydantic import BaseModel


class IrisMessageRole(Enum):
USER = "user"
ASSISTANT = "assistant"
SYSTEM = "system"


class IrisMessage:
class IrisMessage(BaseModel):
role: IrisMessageRole
text: str

def __init__(self, role: IrisMessageRole, text: str):
self.role = role
self.text = text
super().__init__(role=role, text=text)

def __str__(self):
return f"IrisMessage(role={self.role.value}, text='{self.text}')"
34 changes: 21 additions & 13 deletions app/domain/submission.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
class BuildLogEntry:
def __init__(self, time: str, message: str):
self.time = time
self.message = message


class ProgrammingSubmission:
def __init__(
self, commit_hash: str, build_failed: bool, build_log_entries: [BuildLogEntry]
):
self.commit_hash = commit_hash
self.build_failed = build_failed
self.build_log_entries = build_log_entries
from pydantic import BaseModel


class BuildLogEntry(BaseModel):
time: str
message: str

def __str__(self):
return f'BuildLogEntry(time="{self.time}", message="{self.message}")'


class ProgrammingSubmission(BaseModel):
commit_hash: str
build_failed: bool
build_log_entries: [BuildLogEntry]

def __str__(self):
return (
f'ProgrammingSubmission(commit_hash="{self.commit_hash}", build_failed={self.build_failed}, '
f"build_log_entries={self.build_log_entries})"
)

0 comments on commit 26e86ac

Please sign in to comment.