|
9 | 9 | {% if include_data_types %}
|
10 | 10 | {% do model_yaml.append(' data_type: ' ~ codegen.data_type_format_model(column)) %}
|
11 | 11 | {% 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 | + |
14 | 38 |
|
15 | 39 | {% if column.fields|length > 0 %}
|
16 | 40 | {% for child_column in column.fields %}
|
|
33 | 57 | {% else %}
|
34 | 58 | {% for model in model_names %}
|
35 | 59 | {% do model_yaml.append(' - name: ' ~ model | lower) %}
|
36 |
| - {% do model_yaml.append(' description: ""') %} |
| 60 | + {% do model_yaml.append(' description: |\n <INSERT DESCRIPTION>') %} |
37 | 61 | {% do model_yaml.append(' columns:') %}
|
38 | 62 |
|
39 | 63 | {% set relation=ref(model) %}
|
40 | 64 | {%- 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 %} |
41 | 68 | {% set column_desc_dict = codegen.build_dict_column_descriptions(model) if upstream_descriptions else {} %}
|
42 | 69 |
|
43 | 70 | {% 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 %} |
45 | 76 | {% endfor %}
|
46 | 77 | {% endfor %}
|
47 | 78 | {% endif %}
|
|
0 commit comments