Add proper error handling and mesage

This commit is contained in:
Rising Odegua
2022-01-31 13:11:58 +01:00
parent 3cd6e2aad7
commit ba6f616dd6

View File

@@ -5,28 +5,66 @@ import toArray from 'stream-to-array'
export async function getDataset(directory) { export async function getDataset(directory) {
// get dataset descriptor and resources try {
const f11sDataset = await Dataset.load(directory)
const descriptor = f11sDataset.descriptor
const resources = await Promise.all(f11sDataset.resources.map(async (resource) => { if (!directory) {
let _tmp = resource.descriptor throw new Error('No directory provided.')
let rowStream = await resource.rows({ keyed: true }) }
_tmp.sample = await toArray(rowStream)
_tmp.size = resource.size
return _tmp
}))
const readme = descriptor.readme
const processed = await remark()
.use(html)
.process(readme)
const readmeHtml = processed.toString() const f11sDataset = await Dataset.load(directory)
const dataset = { const descriptor = f11sDataset.descriptor
readme: readme,
readmeHtml: readmeHtml, const resources = await Promise.all(f11sDataset.resources.map(async (resource) => {
descriptor: descriptor, let _tmp = resource.descriptor
resources: resources let rowStream = await resource.rows({ keyed: true })
_tmp.sample = await toArray(rowStream)
_tmp.size = resource.size
return _tmp
}))
const readme = descriptor.readme || ""
const processed = await remark()
.use(html)
.process(readme)
const readmeHtml = processed.toString()
const dataset = {
readme: readme,
readmeHtml: readmeHtml,
descriptor: descriptor,
resources: resources,
hasError: false,
errorMsg: ""
}
return dataset
} catch (err) {
console.log(err)
return {
hasError: true,
errorMsg: errorMessageMappings[err.message] || err.message
}
} }
return dataset
} }
const errorMessageMappings = {
"No datapackage.json at destination.":
`
<div>
<p style="color:red;"><b>No datapackage.json file in the data directory!</b></p>
<p >You need to add a datapackage.json file describing your dataset to the root folder.</p>
<p>For more information, see <a style="color:blue;" href="https://specs.frictionlessdata.io/tabular-data-package/#example">the documentation</a></p>
</div>
`,
"No directory provided.":
`
<div>
<p style="color:red;"><b>No data directory found!</b></p>
<p >You need to provide a data directory with CSV data, datapackage.json, and optionally a ReadMe file.</p>
<p>For more information, see <a style="color:blue;" href="https://specs.frictionlessdata.io/tabular-data-package/#example">the documentation</a></p>
</div>
`,
}