From ba6f616dd6878c97b444dd77d9320589c46190d9 Mon Sep 17 00:00:00 2001 From: Rising Odegua Date: Mon, 31 Jan 2022 13:11:58 +0100 Subject: [PATCH] Add proper error handling and mesage --- examples/dataset-frictionless/lib/dataset.js | 80 +++++++++++++++----- 1 file changed, 59 insertions(+), 21 deletions(-) diff --git a/examples/dataset-frictionless/lib/dataset.js b/examples/dataset-frictionless/lib/dataset.js index 356d37e8..5a1e04af 100644 --- a/examples/dataset-frictionless/lib/dataset.js +++ b/examples/dataset-frictionless/lib/dataset.js @@ -5,28 +5,66 @@ import toArray from 'stream-to-array' export async function getDataset(directory) { - // get dataset descriptor and resources - const f11sDataset = await Dataset.load(directory) - const descriptor = f11sDataset.descriptor + try { - const resources = await Promise.all(f11sDataset.resources.map(async (resource) => { - let _tmp = resource.descriptor - 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) + if (!directory) { + throw new Error('No directory provided.') + } - const readmeHtml = processed.toString() - const dataset = { - readme: readme, - readmeHtml: readmeHtml, - descriptor: descriptor, - resources: resources + const f11sDataset = await Dataset.load(directory) + const descriptor = f11sDataset.descriptor + + const resources = await Promise.all(f11sDataset.resources.map(async (resource) => { + let _tmp = resource.descriptor + 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.": + ` +
+

No datapackage.json file in the data directory!

+

You need to add a datapackage.json file describing your dataset to the root folder.

+

For more information, see the documentation

+
+ `, + "No directory provided.": + ` +
+

No data directory found!

+

You need to provide a data directory with CSV data, datapackage.json, and optionally a ReadMe file.

+

For more information, see the documentation

+
+ `, +} \ No newline at end of file