26 lines
996 B
Python
26 lines
996 B
Python
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
|
|
} |