Keep last good feed snapshot on failed polls !15

merged merged by cmc on 2026-10-18 04:02 UTC · krz/moonrise:fix-feed-status into main

1 file changed, +3 −2

Layout: unified · split

server/src/index.ts +3 −2
@@ -98,13 +98,14 @@ async function launches(env: Env, now: Date): Promise<Response> {
98 }); 98 });
99} 99}
100 100
101// Failures are recorded under "<feed>:error" so the last good snapshot and its time survive.
101async function pollLaunches(env: Env, now: Date): Promise<void> { 102async function pollLaunches(env: Env, now: Date): Promise<void> {
102 let list: Launch[]; 103 let list: Launch[];
103 try { 104 try {
104 list = await fetchUpcoming(env.LL2_API_KEY); 105 list = await fetchUpcoming(env.LL2_API_KEY);
105 } catch (e) { 106 } catch (e) {
106 console.error("ll2", String(e)); 107 console.error("ll2", String(e));
107 await env.DB.prepare("INSERT INTO feed_snapshots (feed, fetched_at, ok) VALUES ('ll2', ?1, 0) ON CONFLICT (feed) DO UPDATE SET fetched_at = ?1, ok = 0").bind(now.toISOString()).run(); 108 await env.DB.prepare("INSERT INTO feed_snapshots (feed, fetched_at, ok) VALUES ('ll2:error', ?1, 0) ON CONFLICT (feed) DO UPDATE SET fetched_at = ?1").bind(now.toISOString()).run();
108 return; 109 return;
109 } 110 }
110 const upsert = env.DB.prepare( 111 const upsert = env.DB.prepare(
@@ -126,7 +127,7 @@ async function pollSpaceWeather(env: Env, now: Date): Promise<void> {
126 w = await fetchSpaceWeather(); 127 w = await fetchSpaceWeather();
127 } catch (e) { 128 } catch (e) {
128 console.error("swpc", String(e)); 129 console.error("swpc", String(e));
129 await env.DB.prepare("INSERT INTO feed_snapshots (feed, fetched_at, ok) VALUES ('swpc', ?1, 0) ON CONFLICT (feed) DO UPDATE SET fetched_at = ?1, ok = 0").bind(now.toISOString()).run(); 130 await env.DB.prepare("INSERT INTO feed_snapshots (feed, fetched_at, ok) VALUES ('swpc:error', ?1, 0) ON CONFLICT (feed) DO UPDATE SET fetched_at = ?1").bind(now.toISOString()).run();
130 return; 131 return;
131 } 132 }
132 await env.DB.prepare( 133 await env.DB.prepare(