import uuid from datetime import datetime, timezone from sqlalchemy import Column, DateTime, Boolean, func from sqlalchemy.dialects.postgresql import UUID from app.core.database import Base class BaseModel(Base): '''기본 모델 클래스''' __abstract__ = True id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, unique=True, nullable=False) created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False) deleted = Column(Boolean, default=False, nullable=False) def soft_delete(self): '''소프트 삭제''' self.deleted = True self.updated_at = datetime.now(timezone.utc) def to_dict(self) -> dict: '''모델을 딕셔너리로 변환''' return { column.name: getattr(self, column.name) for column in self.__table__.columns }