51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
from app.services.subject_service import SubjectService
|
|
from app.helpers import make_response, make_error_response
|
|
from app.schemas.requests import SubjectCreateRequest
|
|
|
|
|
|
class SubjectController:
|
|
def __init__(self, service: SubjectService):
|
|
self.service = service
|
|
|
|
def create(self, req_body):
|
|
try:
|
|
data = SubjectCreateRequest(**req_body)
|
|
new_id = self.service.create_subject(data)
|
|
return make_response(message="Subject created", data={"id": new_id})
|
|
except Exception as e:
|
|
return make_error_response(e)
|
|
|
|
def get_all(self):
|
|
try:
|
|
subjects = self.service.get_all_subjects()
|
|
return make_response(message="success retrieve subject", data=subjects)
|
|
except Exception as e:
|
|
return make_error_response(e)
|
|
|
|
def get_by_id(self, subject_id: str):
|
|
try:
|
|
subject = self.service.get_subject_by_id(subject_id)
|
|
if not subject:
|
|
return make_response(message="Subject not found", status_code=404)
|
|
return make_response(data=subject.model_dump())
|
|
except Exception as e:
|
|
return make_error_response(e)
|
|
|
|
def update(self, subject_id: str, req_body):
|
|
try:
|
|
updated = self.service.update_subject(subject_id, req_body)
|
|
if not updated:
|
|
return make_response(message="No subject updated", status_code=404)
|
|
return make_response(message="Subject updated")
|
|
except Exception as e:
|
|
return make_error_response(e)
|
|
|
|
def delete(self, subject_id: str):
|
|
try:
|
|
deleted = self.service.delete_subject(subject_id)
|
|
if not deleted:
|
|
return make_response(message="No subject deleted", status_code=404)
|
|
return make_response(message="Subject deleted")
|
|
except Exception as e:
|
|
return make_error_response(e)
|