This commit is contained in:
SR07 2025-05-26 18:17:18 +09:00
parent b78f7c8d3b
commit d05c6660e0
4 changed files with 63 additions and 6 deletions

View File

@ -2,7 +2,7 @@ from typing import List
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from app.schemas.character import CharacterCreate, CharacterResponse, CharacterUpdateRequest
from app.schemas.character import CharacterCreate, CharacterResponse, CharacterUpdateRequest, CharacterDetailResponse
from app.schemas.homework import HomeworkSelectableResponse
from app.crud.character import create_character, get_characters_by_user
from app.services.character_homework_service import get_homeworks_with_assignment_status, assign_homework_to_character, unassign_homework_from_character
@ -92,4 +92,19 @@ def delete_character(
db.delete(character)
db.commit()
return {"message": "캐릭터가 삭제되었습니다."}
return {"message": "캐릭터가 삭제되었습니다."}
@router.get("/{character_id}", response_model=CharacterDetailResponse)
def get_character(
character_id: int,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user)
):
current_user = db.merge(current_user)
character = db.query(Character).filter(Character.id == character_id).first()
if not character or character.user_id != current_user.id:
raise HTTPException(status_code=403, detail="권한이 없습니다.")
return character

View File

@ -6,7 +6,7 @@ from typing import List
from app.core.deps import get_db, get_current_user
from app.models.homework import HomeworkType
from app.models.user import User
from app.schemas.homework import HomeworkTypeCreate, HomeworkTypeResponse, HomeworkTypeUpdateRequest
from app.schemas.homework import HomeworkTypeCreate, HomeworkTypeResponse, HomeworkTypeUpdateRequest, HomeworkTypeDetailResponse
from app.crud.homework import create_homework_type, get_homework_types_by_user
router = APIRouter()
@ -75,4 +75,19 @@ def delete_homework_type(
db.delete(homework_type)
db.commit()
return {"message": "숙제가 삭제되었습니다."}
return {"message": "숙제가 삭제되었습니다."}
@router.get("/{homework_type_id}", response_model=HomeworkTypeDetailResponse)
def get_homework_type(
homework_type_id: int,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user)
):
current_user = db.merge(current_user)
homework_type = db.query(HomeworkType).filter(HomeworkType.id == homework_type_id).first()
if not homework_type or homework_type.user_id != current_user.id:
raise HTTPException(status_code=403, detail="권한이 없습니다.")
return homework_type

View File

@ -27,4 +27,17 @@ class CharacterResponse(BaseModel):
class CharacterUpdateRequest(BaseModel):
name: constr(min_length=1)
server: constr(min_length=1)
power: conint(ge=0) # 0 이상 정수
power: conint(ge=0) # 0 이상 정수
class CharacterDetailResponse(BaseModel):
id: int
name: str
server: str
combat_power: int
user_id: int
created_at: datetime
updated_at: datetime
model_config = {
"from_attributes": True
}

View File

@ -34,4 +34,18 @@ class HomeworkTypeUpdateRequest(BaseModel):
name: constr(min_length=1)
description: str | None = None
repeat_type: constr(min_length=1)
repeat_count: conint(ge=1)
repeat_count: conint(ge=1)
class HomeworkTypeDetailResponse(BaseModel):
id: int
user_id: int
title: str
description: str | None
reset_type: str
reset_time: time
clear_count: int
created_at: datetime
model_config = {
"from_attributes": True
}