|
|
from fastapi import FastAPI, HTTPException |
|
|
from pydantic import BaseModel |
|
|
from typing import Dict |
|
|
|
|
|
from .core.quiz_logic import QuizHandler |
|
|
|
|
|
app = FastAPI() |
|
|
|
|
|
|
|
|
class QuizSubmission(BaseModel): |
|
|
answers: Dict[str, int] |
|
|
|
|
|
@app.get("/api/quiz") |
|
|
def get_quiz_questions(): |
|
|
"""Endpoint untuk Frontend mengambil soal""" |
|
|
questions = QuizHandler.get_questions() |
|
|
if not questions: |
|
|
|
|
|
raise HTTPException(status_code=500, detail="Database soal tidak ditemukan") |
|
|
return {"questions": questions} |
|
|
|
|
|
@app.post("/api/quiz") |
|
|
def submit_quiz(submission: QuizSubmission): |
|
|
"""Endpoint untuk Frontend kirim jawaban dan dapat hasil MBTI""" |
|
|
result = QuizHandler.calculate_mbti(submission.answers) |
|
|
return {"mbti": result} |