From 180bfa6de229bd3beb0a74ef953056e5b24f5233 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Fri, 6 Mar 2026 17:33:34 -0600 Subject: [PATCH] fix: convert binary UUID to text in activity feed sync query Fixes Jason.EncodeError when rendering activity feed. PostgreSQL array_agg was returning binary UUID which caused invalid UTF-8 bytes when interpolated into 'sy-#{row.id}' string. Cast to ::text in the fragment to ensure string representation. --- lib/towerops/activity_feed.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/towerops/activity_feed.ex b/lib/towerops/activity_feed.ex index 8cf04da9..f6865f93 100644 --- a/lib/towerops/activity_feed.ex +++ b/lib/towerops/activity_feed.ex @@ -301,7 +301,7 @@ defmodule Towerops.ActivityFeed do from(sl in SyncLog, where: sl.organization_id == ^org_id, select: %{ - id: fragment("(array_agg(? ORDER BY ? DESC))[1]", sl.id, sl.inserted_at), + id: fragment("(array_agg(?::text ORDER BY ? DESC))[1]", sl.id, sl.inserted_at), timestamp: fragment("date_trunc('minute', ?)", sl.inserted_at), status: fragment("(array_agg(? ORDER BY ? DESC))[1]", sl.status, sl.inserted_at), records_synced: sum(sl.records_synced),