Skip to content

Commit 063f75e

Browse files
authored
Merge pull request #1 from octoenergy/octofy-yml-generation
Refactor codegen to use octo guidelines for yml
2 parents af12570 + b411726 commit 063f75e

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

macros/generate_model_yaml.sql

+35-4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,32 @@
99
{% if include_data_types %}
1010
{% do model_yaml.append(' data_type: ' ~ codegen.data_type_format_model(column)) %}
1111
{% endif %}
12-
{% do model_yaml.append(' description: "' ~ column_desc_dict.get(column.name | lower,'') ~ '"') %}
13-
{% do model_yaml.append('') %}
12+
{% do model_yaml.append(' description: |\n <INSERT DESCRIPTION>' ~ column_desc_dict.get(column.name | lower,'')) %}
13+
14+
{% if column.fields|length > 0 %}
15+
{% for child_column in column.fields %}
16+
{% set model_yaml = codegen.generate_column_yaml(child_column, model_yaml, column_desc_dict, include_data_types, parent_column_name=column_name) %}
17+
{% endfor %}
18+
{% endif %}
19+
{% do return(model_yaml) %}
20+
{% endmacro %}
21+
22+
{% macro generate_pk_yaml(column, model_yaml, column_desc_dict, include_data_types, parent_column_name="") %}
23+
{% if parent_column_name %}
24+
{% set column_name = parent_column_name ~ "." ~ column.name %}
25+
{% else %}
26+
{% set column_name = column.name %}
27+
{% endif %}
28+
29+
{% do model_yaml.append(' - name: ' ~ column_name | lower ) %}
30+
{% if include_data_types %}
31+
{% do model_yaml.append(' data_type: ' ~ codegen.data_type_format_model(column)) %}
32+
{% endif %}
33+
{% do model_yaml.append(' description: |\n Primary key' ~ column_desc_dict.get(column.name | lower,'')) %}
34+
{% do model_yaml.append(' tests:') %}
35+
{% do model_yaml.append(' - not_null') %}
36+
{% do model_yaml.append(' - unique') %}
37+
1438

1539
{% if column.fields|length > 0 %}
1640
{% for child_column in column.fields %}
@@ -33,15 +57,22 @@
3357
{% else %}
3458
{% for model in model_names %}
3559
{% do model_yaml.append(' - name: ' ~ model | lower) %}
36-
{% do model_yaml.append(' description: ""') %}
60+
{% do model_yaml.append(' description: |\n <INSERT DESCRIPTION>') %}
3761
{% do model_yaml.append(' columns:') %}
3862

3963
{% set relation=ref(model) %}
4064
{%- set columns = adapter.get_columns_in_relation(relation) -%}
65+
{% if columns | length == 0 %}
66+
{{ exceptions.raise_compiler_error("Could not find models for column in " ~ model ~ ". Run the model in the current schema first and then try again.") }}
67+
{% endif %}
4168
{% set column_desc_dict = codegen.build_dict_column_descriptions(model) if upstream_descriptions else {} %}
4269

4370
{% for column in columns %}
44-
{% set model_yaml = codegen.generate_column_yaml(column, model_yaml, column_desc_dict, include_data_types) %}
71+
{% if loop.first %}
72+
{% set model_yaml = codegen.generate_pk_yaml(column, model_yaml, column_desc_dict, include_data_types) %}
73+
{% else %}
74+
{% set model_yaml = codegen.generate_column_yaml(column, model_yaml, column_desc_dict, include_data_types) %}
75+
{% endif %}
4576
{% endfor %}
4677
{% endfor %}
4778
{% endif %}

macros/generate_source.sql

+2-3
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
{% for table in tables %}
4747
{% do sources_yaml.append(' - name: ' ~ table | lower ) %}
4848
{% if include_descriptions %}
49-
{% do sources_yaml.append(' description: ""' ) %}
49+
{% do sources_yaml.append(' description: |\n <INSERT DESCRIPTION>' ) %}
5050
{% endif %}
5151
{% if generate_columns %}
5252
{% do sources_yaml.append(' columns:') %}
@@ -65,10 +65,9 @@
6565
{% do sources_yaml.append(' data_type: ' ~ codegen.data_type_format_source(column)) %}
6666
{% endif %}
6767
{% if include_descriptions %}
68-
{% do sources_yaml.append(' description: ""' ) %}
68+
{% do sources_yaml.append(' description: |\n <INSERT DESCRIPTION>' ) %}
6969
{% endif %}
7070
{% endfor %}
71-
{% do sources_yaml.append('') %}
7271

7372
{% endif %}
7473

0 commit comments

Comments
 (0)