O2Sound_ver2_final/backend/app/domain/models/base.py

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
}