29 lines
672 B
Python
29 lines
672 B
Python
from abc import ABC, abstractmethod
|
|
|
|
from typing import Self, TypeVar, Generic, TYPE_CHECKING
|
|
|
|
import copy
|
|
|
|
if TYPE_CHECKING:
|
|
from sqlmodel import SQLModel
|
|
|
|
T = TypeVar("T", bound="SQLModel")
|
|
|
|
|
|
class BaseDataModel:
|
|
def deepcopy(self):
|
|
return copy.deepcopy(self)
|
|
|
|
|
|
class BaseDatabaseDataModel(ABC, Generic[T], BaseDataModel):
|
|
@classmethod
|
|
@abstractmethod
|
|
def from_db_instance(cls, db_record: T) -> Self:
|
|
"""从数据库实例创建数据模型对象"""
|
|
raise NotImplementedError
|
|
|
|
@abstractmethod
|
|
def to_db_instance(self) -> T:
|
|
"""将数据模型对象转换为数据库实例"""
|
|
raise NotImplementedError
|