From 057eba018cc582429ff779d738615208f226e4cb Mon Sep 17 00:00:00 2001 From: ailepet Date: Tue, 20 Jan 2026 16:12:54 +0100 Subject: [PATCH 1/4] feat: transform "likes" back into "endorsements" --- .../coalesce_legacy_and_new_columns.sql | 11 ++++++++++ .../blogs_posts/stg_decidim_blogs_posts.sql | 1 + .../decidim/debates/stg_decidim_debates.sql | 1 + .../proposals/stg_decidim_proposals.sql | 3 ++- .../decidim/stg_decidim_endorsements.sql | 22 ++++++++++++++++++- 5 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 projects/demo/macros/coalesce_legacy_and_new_columns.sql 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..75fc985a --- /dev/null +++ b/projects/demo/macros/coalesce_legacy_and_new_columns.sql @@ -0,0 +1,11 @@ +{% 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 }} + {% else %} + {{ new_column_name }} AS {{ legacy_column_name }} + {% endif %} + +{% endmacro %} \ No newline at end of file diff --git a/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql b/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql index ccde2504..508718c0 100644 --- a/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql +++ b/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql @@ -8,5 +8,6 @@ SELECT created_at, decidim_author_id, {{ get_column_if_exists(source('decidim', 'decidim_blogs_posts'), 'published_at', 'TIMESTAMP') }}, + {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_proposals_proposals'), 'endorsements_count', 'likes_count') }}, 'Decidim::Blogs::Post' AS resource_type FROM {{ source('decidim', 'decidim_blogs_posts') }} diff --git a/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql b/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql index b5673123..b096557a 100644 --- a/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql +++ b/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql @@ -14,6 +14,7 @@ renamed AS ( decidim_author_id, created_at, closed_at, + {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_proposals_proposals'), 'endorsements_count', 'likes_count') }}, 'Decidim::Debates::Debate' as resource_type FROM source ) 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..bf3e58aa 100644 --- a/projects/demo/models/staging/decidim/proposals/stg_decidim_proposals.sql +++ b/projects/demo/models/staging/decidim/proposals/stg_decidim_proposals.sql @@ -9,12 +9,13 @@ SELECT decidim_scope_id, created_at, published_at, + {{ get_column_if_exists(source('decidim', 'decidim_proposals_proposals'), 'deleted_at', 'TIMESTAMP') }}, {{ get_column_if_exists(source('decidim', 'decidim_proposals_proposals'), 'withdrawn_at', 'TIMESTAMP') }}, {{ get_column_if_exists(source('decidim', 'decidim_proposals_proposals'), 'valuation_assignments_count', 'INTEGER') }}, {{ 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 diff --git a/projects/demo/models/staging/decidim/stg_decidim_endorsements.sql b/projects/demo/models/staging/decidim/stg_decidim_endorsements.sql index b24dd144..b291f8ab 100644 --- a/projects/demo/models/staging/decidim/stg_decidim_endorsements.sql +++ b/projects/demo/models/staging/decidim/stg_decidim_endorsements.sql @@ -1,3 +1,23 @@ +{% set lang = var('DBT_LANG', 'fr') %} + +{% set relation = adapter.get_relation( + database=target.database, + schema='public', + identifier='decidim_likes' +) %} + +{% if relation is not none %} +SELECT + id, + resource_type, + resource_id, + decidim_author_type, + decidim_author_id, + decidim_user_group_id, + created_at, + updated_at +FROM {{ source('decidim', 'decidim_likes') }} +{% else %} SELECT id, resource_type, @@ -8,4 +28,4 @@ SELECT created_at, updated_at FROM {{ source('decidim', 'decidim_endorsements') }} - \ No newline at end of file +{% endif %} \ No newline at end of file From fcd9b7b8084ad6367ce787c9862b0c960370e5af Mon Sep 17 00:00:00 2001 From: ailepet Date: Tue, 20 Jan 2026 16:18:19 +0100 Subject: [PATCH 2/4] fix data sources --- .../staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql | 2 +- .../demo/models/staging/decidim/debates/stg_decidim_debates.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql b/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql index 508718c0..a352d949 100644 --- a/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql +++ b/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql @@ -8,6 +8,6 @@ SELECT created_at, decidim_author_id, {{ get_column_if_exists(source('decidim', 'decidim_blogs_posts'), 'published_at', 'TIMESTAMP') }}, - {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_proposals_proposals'), 'endorsements_count', 'likes_count') }}, + {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_blogs_posts'), 'endorsements_count', 'likes_count') }}, 'Decidim::Blogs::Post' AS resource_type FROM {{ source('decidim', 'decidim_blogs_posts') }} diff --git a/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql b/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql index b096557a..6dd83934 100644 --- a/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql +++ b/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql @@ -14,7 +14,7 @@ renamed AS ( decidim_author_id, created_at, closed_at, - {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_proposals_proposals'), 'endorsements_count', 'likes_count') }}, + {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_debates_debates'), 'endorsements_count', 'likes_count') }}, 'Decidim::Debates::Debate' as resource_type FROM source ) From 81f285a1511fc7f6b5e7eec813b095af50ca8e54 Mon Sep 17 00:00:00 2001 From: ailepet Date: Tue, 20 Jan 2026 16:47:21 +0100 Subject: [PATCH 3/4] fix coalesce_legacy_and_new_columns macro --- projects/demo/macros/coalesce_legacy_and_new_columns.sql | 4 +++- .../staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql | 2 +- .../models/staging/decidim/debates/stg_decidim_debates.sql | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/demo/macros/coalesce_legacy_and_new_columns.sql b/projects/demo/macros/coalesce_legacy_and_new_columns.sql index 75fc985a..670b5230 100644 --- a/projects/demo/macros/coalesce_legacy_and_new_columns.sql +++ b/projects/demo/macros/coalesce_legacy_and_new_columns.sql @@ -4,8 +4,10 @@ {% if legacy_column_name in column_names %} {{ legacy_column_name }} - {% else %} + {% 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/blogs_posts/stg_decidim_blogs_posts.sql b/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql index a352d949..36f81a0e 100644 --- a/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql +++ b/projects/demo/models/staging/decidim/blogs_posts/stg_decidim_blogs_posts.sql @@ -8,6 +8,6 @@ SELECT created_at, decidim_author_id, {{ get_column_if_exists(source('decidim', 'decidim_blogs_posts'), 'published_at', 'TIMESTAMP') }}, - {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_blogs_posts'), 'endorsements_count', 'likes_count') }}, + {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_blogs_posts'), 'endorsements_count', 'likes_count', 'INTEGER') }}, 'Decidim::Blogs::Post' AS resource_type FROM {{ source('decidim', 'decidim_blogs_posts') }} diff --git a/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql b/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql index 6dd83934..97bb7f4f 100644 --- a/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql +++ b/projects/demo/models/staging/decidim/debates/stg_decidim_debates.sql @@ -14,7 +14,7 @@ renamed AS ( decidim_author_id, created_at, closed_at, - {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_debates_debates'), 'endorsements_count', 'likes_count') }}, + {{ coalesce_legacy_and_new_columns(source('decidim', 'decidim_debates_debates'), 'endorsements_count', 'likes_count', 'INTEGER') }}, 'Decidim::Debates::Debate' as resource_type FROM source ) From 0b698f1f226c34e1e73355361a00900bfe5922d7 Mon Sep 17 00:00:00 2001 From: ailepet Date: Tue, 20 Jan 2026 16:49:19 +0100 Subject: [PATCH 4/4] typo in coalesce_legacy_and_new_columns macro --- projects/demo/macros/coalesce_legacy_and_new_columns.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/demo/macros/coalesce_legacy_and_new_columns.sql b/projects/demo/macros/coalesce_legacy_and_new_columns.sql index 670b5230..abc222ca 100644 --- a/projects/demo/macros/coalesce_legacy_and_new_columns.sql +++ b/projects/demo/macros/coalesce_legacy_and_new_columns.sql @@ -7,7 +7,7 @@ {% 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) + {{ 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