Skip to content

Commit 41c3155

Browse files
committed
Create generate_sources.sql
1 parent ccc1e74 commit 41c3155

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

macros/generate_sources.sql

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
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

Comments
 (0)