async function listDatasets()

in api/v1/src/datasets/dataManager.js [56:89]


async function listDatasets(projectId, includeAll) {
    let labelKey = null;
    if (!includeAll) {
        labelKey = cfg.cdsManagedLabelKey;
    }
    const bigqueryUtil = new BigQueryUtil(projectId);
    const role = await runtimeConfig.bigQueryDataViewerRole(projectId);
    const datasets = await bigqueryUtil.getDatasetsByLabel(labelKey, role).catch(err => {
        console.warn(err);
        return { success: false, errors: [err.message] };
    });
    if (!datasets || datasets === undefined) {
        const message = `Datasets do not exist with labelKey: '${labelKey}'`;
        return { success: false, code: 400, errors: [message] };
    }

    let result = datasets.filter((d) => {
        if (d.labels) {
            for (const l of cfg.cdsExclusionLabels) {
                if (underscore.has(d.labels, l)) {
                    return false;
                }
            }
        }
        return true;
    });

    // Sort the list
    result = underscore.sortBy(result, (item) => {
        return item.datasetId.toLowerCase();
    });

    return { success: true, data: result }
}