Coverage for app/core/base/base_entity.py: 100%
14 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-15 01:44 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-15 01:44 +0000
1from abc import ABCMeta, abstractmethod
3from pydantic.alias_generators import to_camel
4from sqlmodel import SQLModel
5from sqlmodel._compat import SQLModelConfig
8class BaseEntity(SQLModel, metaclass=ABCMeta):
9 model_config = SQLModelConfig(
10 populate_by_name=True, # 名前とエイリアスの入力の両方を許容する
11 alias_generator=to_camel, # キャメルケースのエイリアスを作る
12 validate_assignment=True, # 更新時にvalidationを行う設定
13 )
15 @abstractmethod
16 def _id(self) -> str | int:
17 """IDの取得方法を必ず設計する."""
18 raise NotImplementedError
20 # IDで比較するロジック
21 def __eq__(self, other: object)->bool:
22 if not isinstance(other, self.__class__): # isinstance を使用
23 return False
24 return self._id() == other._id()
25 def __ne__(self, other: object)->bool:
26 return not self.__eq__(other)