Skip to content
Snippets Groups Projects
getErrors.js 2.03 KiB
//dependencies:
// bucket alias <Users_Bucket>

//local aliases:
// var Users_Bucket = {};
// var log = console.log;

function cstr(ob){console.log(JSON.stringify(ob,null,4))}

//todo: can we flatten some of these arrays to increase speed
//then again, although n^n^n the n's have pretty low upper limits

function OnUpdate(doc, meta) {
	try{
		log('t')
		log('docid', meta.id);
		log('updated',Date.now().toISOString())
		//log('doc', doc);

		var validate = {
			doc_date_generated:Date.now().toISOString(),
			doc_total:"",
			doc_with_errors_total:"",
			doc_with_errors_ratio:"",
			doc_errors_total:"",
			userDataFields:{}
		};

		for(var sec in doc.userData){
			validate.userDataFields[sec] = {};
			if(doc.userData[sec].name && doc.userData[sec].name === "error"){
				validate.userDataFields[sec] = {routine:doc.userData[sec].routine,severity:doc.userData[sec].severity}
			}else{
				var atSec = validate.userDataFields[sec] =
					{doc_total: doc.userData[sec].length,doc_with_errors_total:0,doc_with_errors_ratio:0,error_types:{}};

				doc.userData[sec].forEach(item =>{
					validate.doc_total++;
					if(item.errors){
						item.errors.length ? atSec.doc_with_errors_total++:{};
						item.errors.length ? validate.doc_with_errors_total++:{};
						item.errors.forEach(e =>{
							!(atSec.error_types[e.keyword]) ? atSec.error_types[e.keyword] = 0:{};
							atSec.error_types[e.keyword]++;
							validate.doc_errors_total++;
						})
					}
				});
				atSec.doc_with_errors_ratio = atSec.doc_total / atSec.doc_with_errors_total;
			}
		}
		validate.doc_with_errors_ratio = validate.doc_with_errors_total / validate.doc_total;

		doc['validation'] = validate;
		Users_Bucket[meta.id] = doc;
		log('set validation');
		cstr(validate)
	}catch(e){
		log(e);
	}

}function OnDelete(meta) {

}


// var testData = require('../testdata/getErrors_testdata');
// var meta = {cas: 1582920675004055600,
// 	id: "user_profile::IDM800027799",
// 	expiration: 0,
// 	flags: 33554432,
// 	vb: 689,
// 	seq: 64,
// }
// OnUpdate(testData.IDM800646917.Users_Bucket,meta);