From e21588a40be7a845965a0c406d03fb1ec25d10f8 Mon Sep 17 00:00:00 2001 From: Junseo1026 Date: Thu, 25 Sep 2025 21:12:40 +0900 Subject: [PATCH] 0925 21:12 --- models/checklist.py | 17 +++++++---------- routers/checklist.py | 41 +++++++++++++++++++++++++++++++++-------- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/models/checklist.py b/models/checklist.py index 4872506..901580b 100644 --- a/models/checklist.py +++ b/models/checklist.py @@ -1,17 +1,14 @@ -from sqlalchemy import Column, Integer, String, Boolean, TIMESTAMP, ForeignKey, text +from sqlalchemy import Column, Integer, String, Boolean, ForeignKey from sqlalchemy.orm import relationship from .base import Base class Checklist(Base): __tablename__ = "checklist" - id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, ForeignKey("user.u_id", ondelete="CASCADE"), nullable=False) - title = Column(String(255), nullable=False) - is_clear = Column(Boolean, nullable=False, server_default=text("0")) - created_at = Column(TIMESTAMP, nullable=False, server_default=text("CURRENT_TIMESTAMP")) - updated_at = Column(TIMESTAMP, nullable=False, - server_default=text("CURRENT_TIMESTAMP"), - onupdate=text("CURRENT_TIMESTAMP")) + id = Column(Integer, primary_key=True, autoincrement=True) + u_id = Column(Integer, ForeignKey("user.u_id", ondelete="CASCADE"), nullable=False) + checklist_title = Column(String(255), nullable=False) + is_clear = Column(Boolean, nullable=False, default=False) - user = relationship("User", back_populates="checklists") + # 관계 매핑 (User 모델 쪽에 back_populates 필요) + user = relationship("User", back_populates="checklists") \ No newline at end of file diff --git a/routers/checklist.py b/routers/checklist.py index 376d0a4..b814067 100644 --- a/routers/checklist.py +++ b/routers/checklist.py @@ -1,4 +1,3 @@ -# Backend/routers/checklist.py from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from db import get_db @@ -7,20 +6,46 @@ router = APIRouter(prefix="/api/v1/checklists", tags=["Checklists"]) + @router.post("", status_code=status.HTTP_201_CREATED) -def create_checklist(title: str, db: Session = Depends(get_db), user=Depends(get_current_user)): - obj = Checklist(user_id=user.u_id, title=title, is_clear=False) +def create_checklist( + title: str, + db: Session = Depends(get_db), + user=Depends(get_current_user) +): + obj = Checklist(u_id=user.u_id, checklist_title=title, is_clear=False) db.add(obj) db.commit() db.refresh(obj) - return {"id": obj.id, "title": obj.title, "is_clear": obj.is_clear} + return {"id": obj.id, "title": obj.checklist_title, "is_clear": obj.is_clear} + + +@router.get("", status_code=status.HTTP_200_OK) +def get_checklists( + db: Session = Depends(get_db), + user=Depends(get_current_user) +): + objs = db.query(Checklist).filter(Checklist.u_id == user.u_id).all() + return [ + {"id": obj.id, "title": obj.checklist_title, "is_clear": obj.is_clear} + for obj in objs + ] + -@router.patch("/{checklist_id}/clear") -def set_clear_state(checklist_id: int, is_clear: bool, db: Session = Depends(get_db), user=Depends(get_current_user)): - obj = db.query(Checklist).filter(Checklist.id == checklist_id, Checklist.user_id == user.u_id).first() +@router.patch("/{checklist_id}/clear", status_code=status.HTTP_200_OK) +def set_clear_state( + checklist_id: int, + is_clear: bool, + db: Session = Depends(get_db), + user=Depends(get_current_user) +): + obj = db.query(Checklist).filter( + Checklist.id == checklist_id, + Checklist.u_id == user.u_id + ).first() if not obj: raise HTTPException(status_code=404, detail="Checklist not found") obj.is_clear = bool(is_clear) db.commit() db.refresh(obj) - return {"id": obj.id, "is_clear": obj.is_clear} + return {"id": obj.id, "title": obj.checklist_title, "is_clear": obj.is_clear} \ No newline at end of file