75 lines
2.6 KiB
Python
75 lines
2.6 KiB
Python
from typing import Optional
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.application.courses_repository import CoursesRepository
|
|
from app.domain.entities.courses_entity import CourseEntity
|
|
from app.domain.models.courses import Course
|
|
|
|
|
|
class CoursesService:
|
|
def __init__(self, db: Session):
|
|
self.courses_repository = CoursesRepository(db)
|
|
|
|
def get_all(self) -> list[CourseEntity]:
|
|
courses = self.courses_repository.get_all()
|
|
return [
|
|
CourseEntity(
|
|
id=course.id,
|
|
title=course.title,
|
|
description=course.description,
|
|
category_id=course.category_id,
|
|
owner_user_id=course.owner_user_id,
|
|
) for course in courses
|
|
]
|
|
|
|
def get_by_id(self, course_id: int) -> Optional[CourseEntity]:
|
|
course = self.courses_repository.get_by_id(course_id)
|
|
if course:
|
|
return CourseEntity(
|
|
id=course.id,
|
|
title=course.title,
|
|
description=course.description,
|
|
category_id=course.category_id,
|
|
owner_user_id=course.owner_user_id,
|
|
)
|
|
|
|
return None
|
|
|
|
def create(self, course: CourseEntity) -> CourseEntity:
|
|
course_model = Course(
|
|
title=course.title,
|
|
description=course.description,
|
|
category_id=course.category_id,
|
|
owner_user_id=course.owner_user_id,
|
|
)
|
|
created_course = self.courses_repository.create(course_model)
|
|
return CourseEntity(
|
|
id=created_course.id,
|
|
title=created_course.title,
|
|
description=created_course.description,
|
|
category_id=created_course.category_id,
|
|
owner_user_id=created_course.owner_user_id,
|
|
)
|
|
|
|
def update(self, course_id: int, course: CourseEntity) -> Optional[CourseEntity]:
|
|
course_model = self.courses_repository.get_by_id(course_id)
|
|
if course_model:
|
|
course_model.title = course.title
|
|
course_model.description = course.description
|
|
course_model.category_id = course.category_id
|
|
course_model.owner_user_id = course.owner_user_id
|
|
updated_course = self.courses_repository.update(course_model)
|
|
return CourseEntity(
|
|
id=updated_course.id,
|
|
title=updated_course.title,
|
|
description=updated_course.description,
|
|
category_id=updated_course.category_id,
|
|
owner_user_id=updated_course.owner_user_id,
|
|
)
|
|
|
|
return None
|
|
|
|
def delete(self, course_id: int) -> bool:
|
|
return self.courses_repository.delete(course_id) is not None
|