Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 8 additions & 9 deletions models/checklist.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
from sqlalchemy import Column, Integer, String, Boolean, TIMESTAMP, ForeignKey, text
from sqlalchemy import Column, Integer, String, Boolean, ForeignKey, text
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)
# DB 컬럼명은 u_id 이므로 명시적으로 매핑
user_id = Column("u_id", Integer, ForeignKey("user.u_id", ondelete="CASCADE"), nullable=False)
# DB 컬럼명은 checklist_title 이므로 명시적으로 매핑
title = Column("checklist_title", String(255), nullable=False)
is_clear = Column(Boolean, nullable=False, server_default=text("0"))

user = relationship("User", back_populates="checklists")
38 changes: 11 additions & 27 deletions models/file.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,21 @@

from sqlalchemy.orm import relationship

from sqlalchemy import Column, Integer, String, ForeignKey, TIMESTAMP, text
from sqlalchemy.orm import relationship
from .base import Base


class File(Base):
__tablename__ = "file"

id = Column(Integer, primary_key=True, autoincrement=True)

user_id = Column(Integer, ForeignKey('user.u_id', ondelete='CASCADE'), nullable=False)
folder_id = Column(Integer, ForeignKey('folder.id', ondelete='SET NULL'), nullable=True)
note_id = Column(Integer, ForeignKey('note.id', ondelete='CASCADE'), nullable=True)
id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("user.u_id", ondelete="CASCADE"), nullable=False)
folder_id = Column(Integer, ForeignKey("folder.id", ondelete="SET NULL"), nullable=True)
note_id = Column(Integer, ForeignKey("note.id", ondelete="CASCADE"), nullable=True)
original_name = Column(String(255), nullable=False)
saved_path = Column(String(512), nullable=False)
content_type = Column(String(100), nullable=False)
created_at = Column(TIMESTAMP, nullable=False, server_default=text('CURRENT_TIMESTAMP'))
saved_path = Column(String(512), nullable=False)
content_type = Column(String(100), nullable=False)
created_at = Column(TIMESTAMP, nullable=False, server_default=text("CURRENT_TIMESTAMP"))

# ✅ 관계
user = relationship("User", back_populates="files")
# relationships
user = relationship("User", back_populates="files")
folder = relationship("Folder", back_populates="files")
note = relationship("Note", back_populates="files")

user_id = Column(Integer, ForeignKey("user.u_id", ondelete="CASCADE"), nullable=False)
folder_id = Column(Integer, ForeignKey("folder.id", ondelete="SET NULL"), nullable=True)
note_id = Column(Integer, ForeignKey("note.id", ondelete="SET NULL"), nullable=True)
original_name = Column(String(255), nullable=False)
saved_path = Column(String(512), nullable=False)
content_type = Column(String(100), nullable=False)
created_at = Column(TIMESTAMP, nullable=False, server_default=text("CURRENT_TIMESTAMP"))

# relations
user = relationship("User", back_populates="files")
note = relationship("Note", back_populates="files")

note = relationship("Note", back_populates="files")
38 changes: 16 additions & 22 deletions models/folder.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,24 @@
from sqlalchemy.orm import relationship
from .base import Base


class Folder(Base):
__tablename__ = "folder"

id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("user.u_id", ondelete="CASCADE"), nullable=False)
name = Column(String(100), nullable=False)
parent_id = Column(Integer, ForeignKey("folder.id", ondelete="SET NULL"), nullable=True)
id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("user.u_id", ondelete="CASCADE"), nullable=False)
name = Column(String(100), nullable=False)
parent_id = Column(Integer, ForeignKey("folder.id", ondelete="SET NULL"), nullable=True)
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'))

# ✅ 관계
user = relationship("User", back_populates="folders")
parent = relationship("Folder", remote_side=[id], backref="children")
notes = relationship("Note", back_populates="folder", cascade="all, delete")
files = relationship("File", back_populates="folder", cascade="all, delete")

server_default=text("CURRENT_TIMESTAMP"),
onupdate=text("CURRENT_TIMESTAMP"))

# relations
user = relationship("User")
parent = relationship("Folder", remote_side=[id], backref="children")
notes = relationship("Note", back_populates="folder", cascade="all, delete")
updated_at = Column(
TIMESTAMP,
nullable=False,
server_default=text("CURRENT_TIMESTAMP"),
onupdate=text("CURRENT_TIMESTAMP"),
)

# relationships
user = relationship("User", back_populates="folders")
parent = relationship("Folder", remote_side=[id], backref="children")
notes = relationship("Note", back_populates="folder", cascade="all, delete")
files = relationship("File", back_populates="folder", cascade="all, delete")
37 changes: 17 additions & 20 deletions models/note.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,26 @@
from sqlalchemy.orm import relationship
from .base import Base


class Note(Base):
__tablename__ = "note"

id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("user.u_id", ondelete="CASCADE"), nullable=False)
folder_id = Column(Integer, ForeignKey("folder.id", ondelete="SET NULL"), nullable=True)
title = Column(String(255), nullable=False)
content = Column(Text)
is_favorite = Column(Boolean, nullable=False, server_default=text("FALSE"))
id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("user.u_id", ondelete="CASCADE"), nullable=False)
folder_id = Column(Integer, ForeignKey("folder.id", ondelete="SET NULL"), nullable=True)
title = Column(String(255), nullable=False)
content = Column(Text)
is_favorite = Column(Boolean, nullable=False, server_default=text("FALSE"))
last_accessed = Column(TIMESTAMP, nullable=True)
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'))

# ✅ 관계

server_default=text("CURRENT_TIMESTAMP"),
onupdate=text("CURRENT_TIMESTAMP"))

# relations
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"),
)

user = relationship("User", back_populates="notes")
# relationships
user = relationship("User", back_populates="notes")
folder = relationship("Folder", back_populates="notes")
files = relationship("File", back_populates="note", cascade="all, delete")
files = relationship("File", back_populates="note", cascade="all, delete")
18 changes: 16 additions & 2 deletions routers/checklist.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,27 @@

router = APIRouter(prefix="/api/v1/checklists", tags=["Checklists"])

@router.get("")
def list_checklists(db: Session = Depends(get_db), user=Depends(get_current_user)):
"""현재 사용자 체크리스트 전체 목록 반환(최신순)."""
items = (
db.query(Checklist)
.filter(Checklist.user_id == user.u_id)
.order_by(Checklist.id.desc())
.all()
)
return [
{"id": it.id, "title": it.title, "is_clear": int(bool(it.is_clear))}
for it in items
]

@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)
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.title, "is_clear": int(bool(obj.is_clear))}

@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)):
Expand All @@ -23,4 +37,4 @@ def set_clear_state(checklist_id: int, is_clear: bool, db: Session = Depends(get
obj.is_clear = bool(is_clear)
db.commit()
db.refresh(obj)
return {"id": obj.id, "is_clear": obj.is_clear}
return {"id": obj.id, "is_clear": int(bool(obj.is_clear))}
Loading
Loading