Coverage for src / mysingle / core / base / models.py: 0%

18 statements  

« prev     ^ index     » next       coverage.py v7.12.0, created at 2025-12-02 00:58 +0900

1from datetime import UTC, datetime 

2 

3from beanie import Document, Insert, Save, Update, before_event 

4from pydantic import Field 

5 

6 

7class BaseDoc(Document): 

8 """Base Document model.""" 

9 

10 

11class BaseDocWithUserId(BaseDoc): 

12 """Base User Document model.""" 

13 

14 user_id: str 

15 

16 

17class BaseTimeDoc(BaseDoc): 

18 """Base Document model with created_at and updated_at fields.""" 

19 

20 created_at: datetime = Field(default_factory=lambda: datetime.now(UTC)) 

21 updated_at: datetime | None = Field(default_factory=lambda: datetime.now(UTC)) 

22 

23 @before_event([Insert, Save]) 

24 def set_created_at(self): 

25 self.created_at = datetime.now(UTC) 

26 self.updated_at = self.created_at 

27 

28 @before_event([Update]) 

29 def set_updated_at(self): 

30 self.updated_at = datetime.now(UTC) 

31 

32 

33class BaseTimeDocWithUserId(BaseTimeDoc): 

34 """Base User Document model with created_at and updated_at fields.""" 

35 

36 user_id: str