"""tasks 테이블 ORM (CalDAV 캐시)""" from datetime import datetime from sqlalchemy import BigInteger, Boolean, DateTime, ForeignKey, SmallInteger, String, Text from sqlalchemy.orm import Mapped, mapped_column from core.database import Base class Task(Base): __tablename__ = "tasks" id: Mapped[int] = mapped_column(BigInteger, primary_key=True) caldav_uid: Mapped[str | None] = mapped_column(Text, unique=True) title: Mapped[str] = mapped_column(Text, nullable=False) description: Mapped[str | None] = mapped_column(Text) due_date: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) priority: Mapped[int] = mapped_column(SmallInteger, default=0) completed: Mapped[bool] = mapped_column(Boolean, default=False) completed_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) document_id: Mapped[int | None] = mapped_column(BigInteger, ForeignKey("documents.id")) source: Mapped[str | None] = mapped_column(String(50)) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=datetime.now ) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=datetime.now, onupdate=datetime.now )