75 lines
3.3 KiB
Python
75 lines
3.3 KiB
Python
from typing import Optional
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.application.course_students_repository import CourseStudentsRepository
|
|
from app.domain.entities.course_students_entity import CourseStudentEntity
|
|
from app.domain.models.course_students import CourseStudent
|
|
|
|
|
|
class CourseStudentsService:
|
|
def __init__(self, db: Session):
|
|
self.course_students_repository = CourseStudentsRepository(db)
|
|
|
|
def get_all(self) -> list[CourseStudentEntity]:
|
|
course_students = self.course_students_repository.get_all()
|
|
return [
|
|
CourseStudentEntity(
|
|
id=course_student.id,
|
|
enrollment_date=course_student.enrollment_date,
|
|
is_finished=course_student.is_finished,
|
|
course_id=course_student.course_id,
|
|
user_id=course_student.user_id,
|
|
) for course_student in course_students
|
|
]
|
|
|
|
def get_by_id(self, course_student_id: int) -> Optional[CourseStudentEntity]:
|
|
course_student = self.course_students_repository.get_by_id(course_student_id)
|
|
if course_student:
|
|
return CourseStudentEntity(
|
|
id=course_student.id,
|
|
enrollment_date=course_student.enrollment_date,
|
|
is_finished=course_student.is_finished,
|
|
course_id=course_student.course_id,
|
|
user_id=course_student.user_id,
|
|
)
|
|
|
|
return None
|
|
|
|
def create(self, course_student: CourseStudentEntity) -> CourseStudentEntity:
|
|
course_student_model = CourseStudent(
|
|
enrollment_date=course_student.enrollment_date,
|
|
is_finished=course_student.is_finished,
|
|
course_id=course_student.course_id,
|
|
user_id=course_student.user_id,
|
|
)
|
|
created_course_student = self.course_students_repository.create(course_student_model)
|
|
return CourseStudentEntity(
|
|
id=created_course_student.id,
|
|
enrollment_date=created_course_student.enrollment_date,
|
|
is_finished=created_course_student.is_finished,
|
|
course_id=created_course_student.course_id,
|
|
user_id=created_course_student.user_id,
|
|
)
|
|
|
|
def update(self, course_student_id: int, course_student: CourseStudentEntity) -> Optional[CourseStudentEntity]:
|
|
course_student_model = self.course_students_repository.get_by_id(course_student_id)
|
|
if course_student_model:
|
|
course_student_model.enrollment_date = course_student.enrollment_date
|
|
course_student_model.is_finished = course_student.is_finished
|
|
course_student_model.course_id = course_student.course_id
|
|
course_student_model.user_id = course_student.user_id
|
|
updated_course_student = self.course_students_repository.update(course_student_model)
|
|
return CourseStudentEntity(
|
|
id=updated_course_student.id,
|
|
enrollment_date=updated_course_student.enrollment_date,
|
|
is_finished=updated_course_student.is_finished,
|
|
course_id=updated_course_student.course_id,
|
|
user_id=updated_course_student.user_id,
|
|
)
|
|
|
|
return None
|
|
|
|
def delete(self, course_student_id: int) -> bool:
|
|
return self.course_students_repository.delete(course_student_id) is not None
|