stats step 3: elections, party positions and opinion feeds (schema, collectors, timers); world-opinions data moved into stats.wo_*
All checks were successful
Deploy production / deploy (push) Successful in 1m12s

This commit is contained in:
2026-10-25 22:16:25 +00:00
parent 030f3c08ee
commit 42c9351ebd
37 changed files with 75721 additions and 892 deletions

View File

@@ -12,6 +12,9 @@
// bun scripts/stats-fetch.ts eponline [--force] (needs EP_ONLINE_API_KEY)
// bun scripts/stats-fetch.ts cbscw [--force] [--only=cpi,gdp,…] CBS Curaçao files
// bun scripts/stats-fetch.ts cwintl [--only=ilostat,owid,unsdg,comtrade] Curaçao via international APIs
// bun scripts/stats-fetch.ts elections [--force] [--only=kiesraad,cbs,mit] A14
// bun scripts/stats-fetch.ts parties CHES + V-Party + Party Facts (A15)
// bun scripts/stats-fetch.ts wikipolls|eurobarometer [--force]|whr|gtrends|gdelt A16
// bun scripts/stats-fetch.ts normalise-cbs rebuild CBS chart series from the raw rows
import { ensureMeta, sql } from './stats/common';
import { cbs, normaliseCbs } from './stats/cbs';
@@ -28,6 +31,13 @@ import { usaspending } from './stats/usaspending';
import { eponline } from './stats/eponline';
import { cwintl } from './stats/cwintl';
import { cwcbs } from './stats/cwcbs';
import { elections } from './stats/elections';
import { parties } from './stats/parties';
import { wikipolls } from './stats/wikipolls';
import { eurobarometer } from './stats/eurobarometer';
import { whr } from './stats/whr';
import { gtrends } from './stats/gtrends';
import { gdelt } from './stats/gdelt';
const [source, ...args] = process.argv.slice(2);
const flag = (name: string) => args.includes(`--${name}`);
@@ -82,9 +92,30 @@ try {
case 'eponline':
await eponline({ force: flag('force') || flag('backfill'), job });
break;
case 'elections':
await elections({ force: flag('force') || flag('backfill'), only: value('only'), job });
break;
case 'parties':
await parties({ job });
break;
case 'wikipolls':
await wikipolls({ job });
break;
case 'eurobarometer':
await eurobarometer({ force: flag('force') || flag('backfill'), job });
break;
case 'whr':
await whr({ job });
break;
case 'gtrends':
await gtrends({ job });
break;
case 'gdelt':
await gdelt({ job, timespan: value('timespan') });
break;
default:
throw new Error(
`Unknown source "${source}" (cbs, eurostat, fred, bis, worldbank, imf, owid, energycharts, rijksfinancien, ustreasury, usaspending, eponline, cbscw, cwintl, normalise-cbs)`
`Unknown source "${source}" (cbs, eurostat, fred, bis, worldbank, imf, owid, energycharts, rijksfinancien, ustreasury, usaspending, eponline, cbscw, cwintl, elections, parties, wikipolls, eurobarometer, whr, gtrends, gdelt, normalise-cbs)`
);
}
} finally {