diff --git a/projects/demo/macros/coalesce_legacy_and_new_columns.sql b/projects/demo/macros/coalesce_legacy_and_new_columns.sql new file mode 100644 index 00000000..abc222ca --- /dev/null +++ b/projects/demo/macros/coalesce_legacy_and_new_columns.sql @@ -0,0 +1,13 @@ +{% macro coalesce_legacy_and_new_columns(relation, legacy_column_name, new_column_name) %} + {% set columns = adapter.get_columns_in_relation(relation) %} + {% set column_names = columns | map(attribute="name") %} + + {% if legacy_column_name in column_names %} + {{ legacy_column_name }} + {% elif new_column_name in column_names %} + {{ new_column_name }} AS {{ legacy_column_name }} + {% else %} + {{ get_column_if_exists(relation, legacy_column_name, cast_type="TEXT", default_value="NULL", include_alias=True) }} + {% endif %} + +{% endmacro %} \ No newline at end of file diff --git a/projects/demo/models/staging/decidim/proposals/schema.yml b/projects/demo/models/staging/decidim/proposals/schema.yml index c85714da..e70fabf1 100644 --- a/projects/demo/models/staging/decidim/proposals/schema.yml +++ b/projects/demo/models/staging/decidim/proposals/schema.yml @@ -6,7 +6,7 @@ unit_tests: - input: source('decidim', 'decidim_proposals_proposals') format: dict rows: - - {id: 1} + - {id: 1, endorsements_count: 0} expect: format: dict rows: @@ -19,7 +19,7 @@ unit_tests: - input: source('decidim', 'decidim_proposals_proposals') format: dict rows: - - {id: 1} + - {id: 1, endorsements_count: 0} expect: format: dict rows: diff --git a/projects/demo/models/staging/decidim/proposals/stg_decidim_proposals.sql b/projects/demo/models/staging/decidim/proposals/stg_decidim_proposals.sql index 99aa5633..f8547c42 100644 --- a/projects/demo/models/staging/decidim/proposals/stg_decidim_proposals.sql +++ b/projects/demo/models/staging/decidim/proposals/stg_decidim_proposals.sql @@ -14,7 +14,7 @@ SELECT {{ stg_proposals_get_state(source('decidim', 'decidim_proposals_proposals')) }} AS state, {{ get_column_if_exists(source('decidim', 'decidim_proposals_proposals'), 'decidim_proposals_proposal_state_id', 'INTEGER') }}, comments_count, - endorsements_count, + {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_proposals_proposals'), 'endorsements_count', 'likes_count') }}, follows_count, address FROM {{ source('decidim', 'decidim_proposals_proposals') }} \ No newline at end of file