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 };
}