async validate()

in api/v1/src/datasets/views/configValidator.js [47:92]


    async validate(config) {
        bigqueryUtil = new BigQueryUtil(config.projectId);

        console.log("-------------------START - validateSchema-------------------");
        await this.validateSchema(config);
        console.log("-------------------END - validateSchema-------------------\n");

        console.log("-------------------START - validateView-------------------");
        await this.validateView(config);
        console.log("-------------------END - validateView-------------------\n");

        if (await this.isValid()) {
            console.log("-------------------START - validateQueries-------------------");
            await this.validateQueries(config);
            console.log("-------------------END - validateQueries-------------------\n");
        }

        let _isValid = true;
        console.log("-------------------START - Validation Result-------------------");
        if (this.issues.length > 0) {
            this.issues.forEach((i) => {
                console.log(`${i.issueType}: ${i.attribute}: ${i.message}`);
                if (i.issueType === IssueType.ERROR) {
                    _isValid = false;
                }
            });

            if (_isValid === false) {
                console.log("\nCONFIGURATION HAS VALIDATION ERRORS THAT MUST BE FIXED");
                console.log("INFORMATION = Informational");
                console.log("WARNING = Suggested to address/fix in the configuration");
                console.log("ERROR = Must be fixed otherwise script will not proceed to execute\n");
            }

        }
        console.log("-------------------END - Validation Result-------------------\n");

        let formatted = {};
        let distinctAttributes = underscore.uniq(this.issues.map(i => i.attribute));
        distinctAttributes.forEach(a => {
            const e = underscore.where(this.issues, { attribute: a });
            formatted[a] = [e.map(i => i.message).join(', ')];
        });

        return { isValid: _isValid, issues: formatted };
    }