Coverage for fss\common\persistence\base_model.py: 100%

10 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-04-12 22:20 +0800

1"""Common attributes for data object""" 

2 

3from datetime import datetime 

4from typing import Optional 

5 

6from sqlalchemy import BigInteger 

7from sqlmodel import SQLModel as _SQLModel, Field 

8 

9from fss.common.util.snowflake import snowflake_id 

10 

11 

12class BaseModel(_SQLModel): 

13 """ 

14 Identifier for a data object 

15 """ 

16 

17 id: int = Field( 

18 default_factory=snowflake_id, 

19 primary_key=True, 

20 index=True, 

21 nullable=False, 

22 sa_type=BigInteger, 

23 ) 

24 

25 

26class ModelExt(_SQLModel): 

27 """ 

28 Create time and update time for a data object, can be automatically generated 

29 """ 

30 

31 create_time: Optional[datetime] = Field(default_factory=datetime.now) 

32 update_time: Optional[datetime] = Field( 

33 default_factory=datetime.now, sa_column_kwargs={"onupdate": datetime.now} 

34 )