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));
});
}