From d578302b86ab896fd8f555f6624e281b1fecb401 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Mon, 18 May 2026 09:15:47 -0700 Subject: [PATCH] Expose updated_at on v_usdc_purchases view v1_users_purchases.go SELECTs purchases_with_content.updated_at through a CTE wrapping v_usdc_purchases. The view never exposed updated_at, which crashes the /v1/users/{id}/purchases page with: ERROR: column purchases_with_content.updated_at does not exist (SQLSTATE 42703) Alias sp.created_at as updated_at to keep the legacy API contract intact. The legacy usdc_purchases table set both columns to CURRENT_TIMESTAMP at insert and never updated rows, so created_at = updated_at in practice. Co-Authored-By: Claude Opus 4.7 --- ddl/views/v_usdc_purchases.sql | 1 + sql/01_schema.sql | 1 + 2 files changed, 2 insertions(+) diff --git a/ddl/views/v_usdc_purchases.sql b/ddl/views/v_usdc_purchases.sql index 3bb0eb0e..f01eee93 100644 --- a/ddl/views/v_usdc_purchases.sql +++ b/ddl/views/v_usdc_purchases.sql @@ -13,6 +13,7 @@ SELECT sp.content_type::usdc_purchase_content_type AS content_type, sp.content_id, sp.created_at, + sp.created_at AS updated_at, GREATEST( sp.amount - COALESCE( CASE sp.content_type diff --git a/sql/01_schema.sql b/sql/01_schema.sql index cbd5dced..9e5df03a 100644 --- a/sql/01_schema.sql +++ b/sql/01_schema.sql @@ -9631,6 +9631,7 @@ CREATE VIEW public.v_usdc_purchases AS (sp.content_type)::public.usdc_purchase_content_type AS content_type, sp.content_id, sp.created_at, + sp.created_at AS updated_at, GREATEST((sp.amount - COALESCE( CASE sp.content_type WHEN 'track'::text THEN ( SELECT (tph.total_price_cents * 10000)