44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy.orm import Session
|
|
from app.core.deps import get_db, get_current_user
|
|
from app.models.user import User
|
|
from app.models.character import Character
|
|
from app.schemas.character_homework import HomeworkCompletionUpdateRequest
|
|
from app.schemas.homework import HomeworkSelectableResponse
|
|
from app.services.character_homework_service import (
|
|
get_homeworks_with_assignment_status,
|
|
update_homework_completion
|
|
)
|
|
|
|
router = APIRouter(tags=["Character Homeworks"])
|
|
|
|
|
|
@router.get("/{character_id}/homeworks/selectable", response_model=list[HomeworkSelectableResponse])
|
|
def get_selectable_homeworks(
|
|
character_id: int,
|
|
db: Session = Depends(get_db),
|
|
current_user: User = Depends(get_current_user),
|
|
):
|
|
character = db.query(Character).filter_by(id=character_id, user_id=current_user.id).first()
|
|
if not character:
|
|
raise HTTPException(status_code=404, detail="캐릭터를 찾을 수 없습니다.")
|
|
|
|
return get_homeworks_with_assignment_status(db, current_user.id, character_id)
|
|
|
|
|
|
@router.patch("/{character_id}/homeworks/{homework_type_id}")
|
|
def update_homework_completion_api(
|
|
character_id: int,
|
|
homework_type_id: int,
|
|
body: HomeworkCompletionUpdateRequest,
|
|
db: Session = Depends(get_db),
|
|
current_user: User = Depends(get_current_user)
|
|
):
|
|
return update_homework_completion(
|
|
db=db,
|
|
user_id=current_user.id,
|
|
character_id=character_id,
|
|
homework_type_id=homework_type_id,
|
|
new_complete_cnt=body.complete_cnt
|
|
)
|