Name

sn_mab_api.RecordValidator

Description

No description available

Script

var RecordValidator = Class.create();

RecordValidator.prototype = {
  initialize: function() {
  },

  /**
   *
   * @param table {string}
   * @param record {{}}
   * @return {string|*}
   */
  validate: function(table, record) {
      var gr = new GlideRecordSecure(table);
      gr.initialize();

      for (field in record) {
          try {
              var element = gr.getElement(field);

              var descriptor = element.getED();
              var value = record[field];

          } catch (error) {
              return 'invalid field: '  + field;
          }

          var errorMessage = this.validateField(descriptor, value);
          if (errorMessage)
              return errorMessage;
      }
  },

  validateField: function (descriptor, value) {
      if (descriptor.getInternalType() === 'reference') {
          return this.validateReferenceField(descriptor, value);
      }
      if (descriptor.getInternalType() === 'table_name') {
          return this.validateTableNameField(descriptor, value);
      }
  },

  validateReferenceField: function(descriptor, value) {
      var referenceTable = descriptor.getReference();
      if (referenceTable) {
          var gr = new GlideRecordSecure(referenceTable);
          if (!gr.get(value)) {
              return 'invalid reference: ' + value + ' on field '  + descriptor.getName();
          }
      }
  },

  validateTableNameField: function(descriptor, value) {
      if (!gs.tableExists(value)) {
          return 'invalid table, ' + value;
      }
  },

  type: 'RecordValidator'
};

Sys ID

d9f01d4eb7f320108223e126de11a902

Offical Documentation

Official Docs: