|
| 1 | +{% macro generate_firebase_sources( |
| 2 | + var_name='OVERBASE:SOURCES', |
| 3 | + source_prefix='firebase', |
| 4 | + indent=2, |
| 5 | + include_comments=true |
| 6 | +) %} |
| 7 | + {# |
| 8 | + var_name: name of the dbt var containing the projects list |
| 9 | + source_prefix: prefix for source names ("firebase") |
| 10 | + indent: number of spaces for indentation (2) |
| 11 | + include_comments: whether to include comment lines in YAML (true/false) |
| 12 | + #} |
| 13 | + |
| 14 | + {% set projects = var(var_name, []) %} |
| 15 | + |
| 16 | + {% if projects is not iterable or (projects | length == 0) %} |
| 17 | + {{ exceptions.raise_compiler_error( |
| 18 | + "Var '" ~ var_name ~ "' must be a non-empty list of dicts." |
| 19 | + ) }} |
| 20 | + {% endif %} |
| 21 | + |
| 22 | + {% set sp = ' ' * indent %} |
| 23 | + {% set nl = '\n' %} |
| 24 | + {% set out = [] %} |
| 25 | + |
| 26 | + {% do out.append('version: 2') %} |
| 27 | + {% do out.append('') %} |
| 28 | + {% do out.append('sources:') %} |
| 29 | + |
| 30 | + {% for p in projects %} |
| 31 | + {% set pid = (p.get('project_id') or '') | trim %} |
| 32 | + {% set ads = (p.get('analytics_dataset_id') or '') | trim %} |
| 33 | + {% set events_table = (p.get('events_table') or 'events_*') | trim %} |
| 34 | + {% set cds = (p.get('crashlytics_dataset_id') or '') | trim %} |
| 35 | + {% set crash_table = (p.get('crashlytics_table') or '') | trim %} |
| 36 | + |
| 37 | + {% if pid == '' or ads == '' %} |
| 38 | + {{ exceptions.raise_compiler_error("Missing required keys in " ~ var_name) }} |
| 39 | + {% endif %} |
| 40 | + |
| 41 | + {% if include_comments %} |
| 42 | + {% do out.append(sp ~ "# Analytics for " ~ pid) %} |
| 43 | + {% endif %} |
| 44 | + {% do out.append(sp ~ "- name: " ~ source_prefix ~ "_analytics__" ~ pid) %} |
| 45 | + {% do out.append(sp ~ " database: " ~ pid) %} |
| 46 | + {% do out.append(sp ~ " schema: " ~ ads) %} |
| 47 | + {% do out.append(sp ~ " tables:") %} |
| 48 | + {% do out.append(sp ~ " - name: events") %} |
| 49 | + {% do out.append(sp ~ " identifier: " ~ events_table) %} |
| 50 | + {% do out.append('') %} |
| 51 | + |
| 52 | + {% if cds != '' %} |
| 53 | + {% if include_comments %} |
| 54 | + {% do out.append(sp ~ "# Crashlytics for " ~ pid) %} |
| 55 | + {% endif %} |
| 56 | + {% do out.append(sp ~ "- name: " ~ source_prefix ~ "_crashlytics__" ~ pid) %} |
| 57 | + {% do out.append(sp ~ " database: " ~ pid) %} |
| 58 | + {% do out.append(sp ~ " schema: " ~ cds) %} |
| 59 | + {% do out.append(sp ~ " tables:") %} |
| 60 | + {% do out.append(sp ~ " - name: events") %} |
| 61 | + {% do out.append(sp ~ " identifier: " ~ crash_table) %} |
| 62 | + {% do out.append('') %} |
| 63 | + {% endif %} |
| 64 | + {% endfor %} |
| 65 | + |
| 66 | + {% set result = out | join(nl) | trim %} |
| 67 | + {{ print(result) }} |
| 68 | + {{ return(result) }} |
| 69 | +{% endmacro %} |
0 commit comments