53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
from flask import jsonify
|
|
from pydantic import ValidationError
|
|
from schemas.requests import QuizCreateSchema
|
|
from schemas.response import QuizCreationResponse
|
|
from services import QuizService
|
|
from helpers import make_response, make_error_response
|
|
|
|
|
|
class QuizController:
|
|
def __init__(self, quiz_service: QuizService):
|
|
self.quiz_service = quiz_service
|
|
|
|
def get_quiz(self, quiz_id):
|
|
try:
|
|
result = self.quiz_service.get_quiz(quiz_id)
|
|
if not result:
|
|
return make_response(message="Quiz not found", status_code=404)
|
|
return make_response(message="Quiz Found", data=result.dict())
|
|
except Exception as e:
|
|
return make_error_response(e)
|
|
|
|
def create_quiz(self, quiz_data):
|
|
try:
|
|
quiz_obj = QuizCreateSchema(**quiz_data)
|
|
quiz_id = self.quiz_service.create_quiz(quiz_obj)
|
|
return make_response(
|
|
message="Quiz created",
|
|
data=QuizCreationResponse(quiz_id=quiz_id),
|
|
status_code=201,
|
|
)
|
|
except ValidationError as e:
|
|
return make_response(e.errors(), status_code=400)
|
|
except Exception as e:
|
|
return make_error_response(e)
|
|
|
|
# def update_quiz(self, quiz_id, quiz_data):
|
|
# try:
|
|
# quiz_obj = QuizUpdateSchema(**quiz_data)
|
|
# success = self.quiz_service.update_quiz(
|
|
# quiz_id, quiz_obj.dict(exclude_unset=True)
|
|
# )
|
|
# if not success:
|
|
# return jsonify({"error": "Quiz not found or update failed"}), 400
|
|
# return jsonify({"message": "Quiz updated"}), 200
|
|
# except ValidationError as e:
|
|
# return jsonify({"error": "Validation error", "detail": e.errors()}), 400
|
|
|
|
def delete_quiz(self, quiz_id):
|
|
success = self.quiz_service.delete_quiz(quiz_id)
|
|
if not success:
|
|
return jsonify({"error": "Quiz not found"}), 400
|
|
return jsonify({"message": "Quiz deleted"}), 200
|