33from pydantic import BaseModel , Field , PydanticValueError , validator
44
55
6+ # dbt2looker utility types
67class UnsupportedDbtAdapterError (PydanticValueError ):
78 code = 'unsupported_dbt_adapter'
89 msg_template = '{wrong_value} is not a supported dbt adapter'
@@ -14,10 +15,33 @@ class SupportedDbtAdapters(str, Enum):
1415 snowflake = 'snowflake'
1516
1617
17- class DbtProjectConfig (BaseModel ):
18+ # Lookml types
19+ class LookerAggregateMeasures (str , Enum ):
20+ average = 'average'
21+ average_distinct = 'average_distinct'
22+ count = 'count'
23+ count_distinct = 'count_distinct'
24+ list = 'list'
25+ max = 'max'
26+ median = 'median'
27+ median_distinct = 'median_distinct'
28+ min = 'min'
29+ percentile = 'percentile'
30+ percentile_distinct = 'percentile_distinct'
31+ sum = 'sum'
32+ sum_distinct = 'sum_distinct'
33+
34+
35+ class Dbt2LookerMeasure (BaseModel ):
1836 name : str
37+ type : LookerAggregateMeasures
38+
39+
40+ class Dbt2LookerMeta (BaseModel ):
41+ measures : Optional [List [Dbt2LookerMeasure ]] = []
1942
2043
44+ # Looker file types
2145class LookViewFile (BaseModel ):
2246 filename : str
2347 contents : str
@@ -28,10 +52,20 @@ class LookModelFile(BaseModel):
2852 contents : str
2953
3054
55+ # dbt config types
56+ class DbtProjectConfig (BaseModel ):
57+ name : str
58+
59+
60+ class DbtModelColumnMeta (BaseModel ):
61+ looker : Optional [Dbt2LookerMeta ] = Field (Dbt2LookerMeta (), alias = 'looker.com' )
62+
63+
3164class DbtModelColumn (BaseModel ):
3265 name : str
3366 description : str
3467 data_type : Optional [str ]
68+ meta : DbtModelColumnMeta
3569
3670
3771class DbtNode (BaseModel ):
0 commit comments