Coverage for dj/models/cube.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.2.3, created at 2023-04-17 20:05 -0700

1""" 

2Models for cubes. 

3""" 

4 

5from typing import List, Optional 

6 

7from pydantic import Field 

8from sqlmodel import SQLModel 

9 

10from dj.models.node import AvailabilityState, NodeType 

11from dj.typing import UTCDatetime 

12 

13 

14class CubeElementMetadata(SQLModel): 

15 """ 

16 Metadata for an element in a cube 

17 """ 

18 

19 id: int 

20 current_version: str 

21 name: str 

22 

23 

24class CubeRevisionMetadata(SQLModel): 

25 """ 

26 Metadata for a cube node 

27 """ 

28 

29 id: int = Field(alias="node_revision_id") 

30 node_id: int 

31 type: NodeType 

32 name: str 

33 display_name: str 

34 version: str 

35 description: str = "" 

36 availability: Optional[AvailabilityState] = None 

37 cube_elements: List[CubeElementMetadata] 

38 updated_at: UTCDatetime 

39 

40 class Config: # pylint: disable=missing-class-docstring,too-few-public-methods 

41 allow_population_by_field_name = True