async function fetchData()

in netlify/functions/store-ping-data-background/index.ts [72:89]


async function fetchData(date: string): Promise<Ping[]> {
	const credentials_json = process.env["GOOGLE_APPLICATION_CREDENTIALS_JSON"];
	if (!credentials_json) {
		throw new Error("no google application credentials");
	}
	const credentials = JSON.parse(credentials_json);
	const query = await readFile(`${import.meta.dirname}/query.sql`, "utf8");

	const bq = new BigQuery({ projectId: BIGQUERY_PROJECT_ID, credentials });
	const stream = bq.createQueryStream({ query, params: { date } });

	return await new Promise((resolve, reject) => {
		stream.on('error', reject);
		const pings: Ping[] = [];
		stream.on('data', row => pings.push(row));
		stream.on('end', () => resolve(pings));
	});
}