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

20 statements  

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

1""" 

2Models for columns. 

3""" 

4import enum 

5from typing import Optional 

6 

7from sqlalchemy.sql.schema import Column as SqlaColumn 

8from sqlalchemy.types import Enum 

9from sqlmodel import Field, SQLModel 

10 

11from dj.models.base import BaseSQLModel 

12 

13 

14class Dialect(str, enum.Enum): 

15 """ 

16 SQL dialect 

17 """ 

18 

19 SPARK = "spark" 

20 TRINO = "trino" 

21 

22 

23class Engine(BaseSQLModel, table=True): # type: ignore 

24 """ 

25 A query engine. 

26 """ 

27 

28 id: Optional[int] = Field(default=None, primary_key=True) 

29 name: str 

30 version: str 

31 uri: Optional[str] 

32 dialect: Optional[Dialect] = Field(sa_column=SqlaColumn(Enum(Dialect))) 

33 

34 

35class EngineInfo(SQLModel): 

36 """ 

37 Class for engine creation 

38 """ 

39 

40 name: str 

41 version: str 

42 uri: Optional[str] 

43 dialect: Optional[Dialect]