import mkdirp from 'mkdirp' import path from 'path' import fs from 'fs/promises' import Papa from 'papaparse' async function processSingleZip(zip) { const output = { directory: `./public/data/testing-trend`, file: county => `${county}.json` } try { await fs.rm(output.directory, { recursive: true }) } catch (e) {} const csv = await zip.entryData('pcr_antigen.csv').then(res => res.toString()) const rows = Papa.parse(csv, { header: true }).data const counties = rows.reduce((counties, row) => { const county = row.county === 'Georgia' ? 'All' : row.county if (!county) return counties if (!counties[county]) counties[county] = [] counties[county].push({ report_date: row['report_date'], pcr_performed: +row['ALL PCR tests performed'], pcr_positive: +row['All PCR positive tests'], antigen_performed: +row['Antigen Tests Performed'], antigen_positive: +row['Antigen Positive Tests'], combined_performed: (+row['ALL PCR tests performed']) + (+row['Antigen Tests Performed']), combined_positive: (+row['All PCR positive tests']) + (+row['Antigen Positive Tests']), seven_day_percent_positive: +row['7 day percent positive'], combined_performed_running_total: (+row['Running total of all PCR tests']) + (+row['Running total of all Antigen tests']), }) return counties }, {}) for (const county in counties) { const data = { segment: { county }, headers: Object.keys(counties[county][0]), rows: counties[county].map(row => Object.values(row)) } await mkdirp(output.directory) await fs.writeFile(path.join(output.directory, output.file(county)), JSON.stringify(data)) } } function process (zips) { return Promise.all(zips.map(zip => processSingleZip(zip))) } export default process