from sqlalchemy import Column, String, DateTime, Text, Boolean from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship from sqlalchemy.sql import func import uuid from ..core.database import Base class Book(Base): """서적 테이블 (여러 문서를 묶는 단위)""" __tablename__ = "books" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) title = Column(String(500), nullable=False, index=True) author = Column(String(255), nullable=True) description = Column(Text, nullable=True) language = Column(String(10), default="ko") is_public = Column(Boolean, default=False) created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), onupdate=func.now()) # 관계 documents = relationship("Document", back_populates="book", cascade="all, delete-orphan") categories = relationship("BookCategory", back_populates="book", cascade="all, delete-orphan", order_by="BookCategory.sort_order") def __repr__(self): return f""