
from sqlalchemy.orm import Session
from app.models import Diary as DiaryModel, User
from ..database import get_db
이 부분에서는 FastAPI의 Depends를 사용해 데이터베이스 세션을 주입하고, SQLAlchemy로 다이어리를 처리하는 과정을 설명합니다.
@router.post("/")
async def new_diary(diary: DiaryCreate, db: Session = Depends(get_db)):
user = db.query(User).filter(User.id == 1).first()
new_diary = DiaryModel(user_id=user.id, ...)
db.add(new_diary)
db.commit()
db.refresh(new_diary)
return {"status": 201, "message": "다이어리 저장 성공", "data": {"id": new_diary.id}}
내용: 다이어리를 작성하는 API입니다. 사용자가 제목, 내용, 감정, 날씨 등을 입력해 다이어리를 저장할 수 있습니다. FastAPI의 POST 메서드를 사용해 데이터를 전송하고, SQLAlchemy로 데이터를 데이터베이스에 저장합니다.
@router.put("/{diary_id}")
async def edit_diary(diary_id: int, diary: Diary, db: Session = Depends(get_db)):
existing_diary = db.query(DiaryModel).filter(DiaryModel.id == diary_id).first()
if not existing_diary:
raise HTTPException(status_code=404, detail="Diary not found")
existing_diary.title = diary.title
...
db.commit()
내용: 사용자가 작성한 다이어리를 수정할 수 있는 API입니다. 해당 다이어리 ID를 통해 데이터를 조회하고, 필요한 필드를 수정 후 저장합니다.
@router.delete("/{diary_id}")
async def delete_diary(diary_id: int, db: Session = Depends(get_db)):
diary_to_delete = db.query(DiaryModel).filter(DiaryModel.id == diary_id).first()
if not diary_to_delete:
raise HTTPException(status_code=404, detail="Diary not found")
diary_to_delete.is_deleted = True
db.commit()
내용: 사용자가 작성한 다이어리를 삭제하는 API입니다. 실제 데이터를 삭제하는 대신, 논리적 삭제(Soft Delete) 방식을 사용해 is_deleted 필드만 업데이트합니다.
데이터베이스에서 레코드를 실제로 삭제하지 않고 상태만 업데이트하여 추후 복구가 가능하도록 하는 논리적 삭제 방식