48 lines
1.4 KiB
JavaScript

import fs from 'fs/promises'
import fg from 'fast-glob'
import path from 'path'
import StreamZip from 'node-stream-zip'
import XLSX from 'xlsx'
import Counties from './parser/counties.js'
import OverallTesting from './parser/overall/testing.js'
import OverallCases from './parser/overall/cases.js'
import OverallHospitalizations from './parser/overall/hospitalizations.js'
import OverallDeaths from './parser/overall/deaths.js'
import OverallVaccinations from './parser/overall/vaccinations.js'
import RiskAge from './parser/risk/age.js'
import RiskHealthConditions from './parser/risk/health-conditions.js'
import Summary from './parser/summary.js'
async function main() {
const sources = await fg(['./data/raw/dph-daily-report/*.zip'])
sources.sort()
const zips = sources.map(source => ({
date: path.basename(source, path.extname(source)),
zip: new StreamZip.async({ file: source })
}))
const vaccinations = await fg(['./data/raw/vaccinations/*.xlsx'])
const vaccinationSheets = vaccinations.map(source => ({
date: path.basename(source, path.extname(source)),
xlsx: XLSX.readFile(source)
}))
const counties = await Counties(zips)
await OverallTesting(zips)
await OverallCases(zips, counties)
await OverallHospitalizations(zips, counties)
await OverallDeaths(zips, counties)
await OverallVaccinations(vaccinationSheets, counties)
await RiskAge(zips)
await RiskHealthConditions(zips)
await Summary()
}
main()