grafo-client
Version:
Grafo Client API Library
1 lines • 3.8 kB
JavaScript
;var DataTypes=require("./datatypes");const GrafoErrorGlossary=require("../errors/GrafoErrorGlossary"),GenericValidationError=require("../errors/GenericValidationError");this.validateEkgDoc=function(t){if(console.log("Validating....."),t.concepts)for(var r in t.concepts){var i=t.concepts[r];if(this.validateConcept(i,getIsUpdate(i),getIsCreate(i)),i.attrGroup&&i.attrGroup.attributes)for(var e=0;e<i.attrGroup.attributes.length;e++){var a=i.attrGroup.attributes[e];this.validateAttribute(a,getIsUpdate(a),getIsCreate(a))}}if(t.relationships)for(var r in t.relationships){var o=t.relationships[r];if(this.validateRelationship(o,getIsUpdate(o),getIsCreate(o)),o.attrGroup&&o.attrGroup.attributes)for(e=0;e<o.attrGroup.attributes.length;e++){a=o.attrGroup.attributes[e];this.validateAttribute(a,getIsUpdate(a),getIsCreate(a))}}},this.validateConcept=function(t,r,i){if(t.id&&!t.id.match(/node-[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Provide a valid Concept Id");if(!(r||t.label&&t.label&&t.label.trim()))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Valid Concept Label is Required");if(t.positionX&&isNaN(parseInt(t.positionX)))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Provide a valid integer for PositionX");if(t.positionY&&isNaN(parseInt(t.positionY)))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Provide a valid integer for PositionY");validateField(this,t,i)},this.validateRelationship=function(t,r,i){if(t.id&&!t.id.match(/link-[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Relationship id is not valid. Provide a valid UUID v4 starting with link-");if(!(r||t.specialization||t.label&&t.label&&t.label.trim()))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Label is required to add relationship");if(!r&&!t.fromConceptId)throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"From Concept is required to add relationship");if(!r&&!t.toConceptId)throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"To Concept is required to add relationship");if(t.positionX&&isNaN(parseInt(t.positionX)))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Provide a valid integer for positionX to add self relationship.");if(t.positionY&&isNaN(parseInt(t.positionY)))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Provide a valid integer for positionY to add self relationship.");validateField(this,t,i)},this.validateAttribute=function(t,r,i){if(!(r||t.label&&t.label&&t.label.trim()))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Valid Attribute Label is Required");validateField(this,t,i)},this.validateCustomField=function(t,r){if(r&&(!t.title||!t.title||!t.title.trim()))throw new GenericValidationError(GrafoErrorGlossary.ErrorLevel.INFO,"Valid Field Title is Required")};var getIsUpdate=function(t){return t.entityState===DataTypes.EntityState.UPDATE||t.entityState===DataTypes.EntityState.UNCHANGED||t.entityState===DataTypes.EntityState.DELETE},getIsCreate=function(t){return!t.entityState&&t.entityState!==DataTypes.EntityState.UNCHANGED||t.entityState===DataTypes.EntityState.CREATE},validateField=function(t,r,i){if(r.fields&&r.fields.length>0)for(var e=0;e<r.fields.length;e++){var a=r.fields[e],o=!!i||a.entityState===DataTypes.EntityState.CREATE;t.validateCustomField(a,o)}};module.exports={validateEkgDoc:this.validateEkgDoc,validateConcept:this.validateConcept,validateRelationship:this.validateRelationship,validateAttribute:this.validateAttribute,validateCustomField:this.validateCustomField};