Browse Source

Fix broken subscriber data export

Kailash Nadh 5 năm trước cách đây
mục cha
commit
442dec9341

+ 15 - 23
queries.sql

@@ -185,42 +185,34 @@ UPDATE subscriber_lists SET status = 'unsubscribed' WHERE
 -- privacy
 -- name: export-subscriber-data
 WITH prof AS (
-    SELECT uuid, email, name, attribs, status, created_at, updated_at FROM subscribers WHERE
+    SELECT id, uuid, email, name, attribs, status, created_at, updated_at FROM subscribers WHERE
     CASE WHEN $1 > 0 THEN id = $1 ELSE uuid = $2 END
 ),
 subs AS (
-    SELECT JSON_AGG(
-        ROW_TO_JSON(
-            (SELECT l FROM (
-                SELECT subscriber_lists.status AS subscription_status,
-                        (CASE WHEN lists.type = 'private' THEN 'Private list' ELSE lists.name END) as name,
-                        lists.type, subscriber_lists.created_at
-            ) l)
-        )
-    ) AS lists FROM lists
+    SELECT subscriber_lists.status AS subscription_status,
+            (CASE WHEN lists.type = 'private' THEN 'Private list' ELSE lists.name END) as name,
+            lists.type, subscriber_lists.created_at
+    FROM lists
     LEFT JOIN subscriber_lists ON (subscriber_lists.list_id = lists.id)
     WHERE subscriber_lists.subscriber_id = (SELECT id FROM prof)
-    GROUP BY subscriber_id
 ),
 views AS (
-    SELECT JSON_AGG(t) AS views FROM
-    (SELECT subject as campaign, COUNT(subscriber_id) as views FROM campaign_views
-            LEFT JOIN campaigns ON (campaigns.id = campaign_views.campaign_id)
-            WHERE subscriber_id = (SELECT id FROM prof)
-            GROUP BY campaigns.id ORDER BY id) t
+    SELECT subject as campaign, COUNT(subscriber_id) as views FROM campaign_views
+        LEFT JOIN campaigns ON (campaigns.id = campaign_views.campaign_id)
+        WHERE subscriber_id = (SELECT id FROM prof)
+        GROUP BY campaigns.id ORDER BY id
 ),
 clicks AS (
-    SELECT JSON_AGG(t) AS views FROM
-    (SELECT url, COUNT(subscriber_id) as clicks FROM link_clicks
+    SELECT url, COUNT(subscriber_id) as clicks FROM link_clicks
         LEFT JOIN links ON (links.id = link_clicks.link_id)
         WHERE subscriber_id = (SELECT id FROM prof)
-        GROUP BY links.id ORDER BY id) t
+        GROUP BY links.id ORDER BY id
 )
 SELECT (SELECT email FROM prof) as email,
-        COALESCE((SELECT JSON_AGG(t) AS profile FROM prof t), '{}') AS profile,
-        COALESCE((SELECT * FROM subs), '[]') AS subscriptions,
-        COALESCE((SELECT * FROM views), '[]') AS campaign_views,
-        COALESCE((SELECT * FROM clicks), '[]') AS link_clicks;
+        COALESCE((SELECT JSON_AGG(t) FROM prof t), '{}') AS profile,
+        COALESCE((SELECT JSON_AGG(t) FROM subs t), '[]') AS subscriptions,
+        COALESCE((SELECT JSON_AGG(t) FROM views t), '[]') AS campaign_views,
+        COALESCE((SELECT JSON_AGG(t) FROM clicks t), '[]') AS link_clicks;
 
 -- Partial and RAW queries used to construct arbitrary subscriber
 -- queries for segmentation follow.

+ 1 - 1
static/email-templates/subscriber-data.html

@@ -2,7 +2,7 @@
 {{ template "header" . }}
 <h2>Your data</h2>
 <p>
-  A copy of all data recorded on you is attached as a file in the JSON format.
+  A copy of all data recorded on you is attached as a file in JSON format.
   It can be viewed in a text editor.
 </p>
 {{ template "footer" }}

+ 1 - 1
static/public/subscriber-data.html

@@ -2,7 +2,7 @@
 {{ template "header" . }}
 <h2>Your data</h2>
 <p>
-  A copy of all data recorded on you is attached as a file in the JSON format.
+  A copy of all data recorded on you is attached as a file in JSON format.
   It can be viewed in a text editor.
 </p>
 {{ template "footer" }}