search for standard sites pub-search.waow.tech
search zig blog atproto
11
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: turso query — GROUP BY instead of ROW_NUMBER, proper error handling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+14 -12
+14 -12
scripts/build-atlas
··· 107 107 "type": "execute", 108 108 "stmt": { 109 109 "sql": ( 110 - "SELECT p.name, p.base_path, p.did, ci.cover_image " 110 + "SELECT p.name, p.base_path, p.did, c.cover_image " 111 111 "FROM publications p " 112 112 "LEFT JOIN (" 113 - " SELECT publication_uri, cover_image, " 114 - " ROW_NUMBER() OVER (PARTITION BY publication_uri) AS rn " 115 - " FROM documents WHERE cover_image IS NOT NULL" 116 - ") ci ON ci.publication_uri = p.uri AND ci.rn = 1" 113 + " SELECT publication_uri, MIN(cover_image) as cover_image " 114 + " FROM documents WHERE cover_image IS NOT NULL " 115 + " GROUP BY publication_uri" 116 + ") c ON c.publication_uri = p.uri" 117 117 ) 118 118 }, 119 119 }, ··· 124 124 try: 125 125 resp = httpx.post(url, headers=headers, json=body, timeout=30) 126 126 resp.raise_for_status() 127 - except Exception as e: 128 - log(f" warning: turso query failed: {e}") 127 + results = resp.json().get("results", []) 128 + if not results or "response" not in results[0]: 129 + return {} 130 + rows = results[0]["response"]["result"]["rows"] 131 + cols = [c["name"] for c in results[0]["response"]["result"]["cols"]] 132 + except httpx.HTTPError as e: 133 + log(f" warning: turso request failed: {e}") 129 134 return {} 130 - results = resp.json().get("results", []) 131 - if not results or "response" not in results[0]: 135 + except (KeyError, IndexError) as e: 136 + log(f" warning: unexpected turso response: {e}") 132 137 return {} 133 - 134 - rows = results[0]["response"]["result"]["rows"] 135 - cols = [c["name"] for c in results[0]["response"]["result"]["cols"]] 136 138 lookup = {} 137 139 for row in rows: 138 140 values = {cols[i]: (row[i]["value"] if row[i]["type"] != "null" else None) for i in range(len(cols))}