/mastercheck

Consistency check of the master data.

Primary LanguageJavaScript

MasterCheck

Consistency check of the master data.

Documents

Installation

npm install mastercheck

Usage

Example

var mastercheck = require('mastercheck');

var format = {
    CollectionA: {
        _id: mastercheck.format('String'),
        num: mastercheck.format('Number'),
        obj: {
            bool: mastercheck.format('Boolean'),
        },
        list: [
            {
                num: mastercheck.format('Number')
            }
        ],
        arr: [
            mastercheck.format('Number')
        ],
        map: mastercheck.format('Map', null, {
            name: mastercheck.format('String')
        })
    },
    CollectionB: {}
}

mastercheck.setup(format);

var masterData = {
    CollectionA: [
        { _id: 'A1', num: 0, obj: { bool: true }, list: [ { num: 1 }, { num: 2 } ], arr: [ 1, 2 ], map: { test1: { name: 'test1' }, test2: { name: 'test2' } } },
        { _id: 'A2', num: 0, obj: { bool: 1 }, list: [ { num: 1 }, { num: 2 } ], arr: [ 1, 2 ], map: { test1: { name: 'test1' }, test2: { name: 'test2' } } }
    ],
    CollectionB: [

    ]
};

mastercheck.check('CollectionA', masterData.CollectionA, function(err) {
    // The return err in { collectionName: 'CollectionA', _id: 'A2', key: 'obj.bool', value: 1, message: '1 should be a Boolean' } when it was inconsistent if
});

mastercheck.checkAll(masterData, function(err) {
    // The return err in { collectionName: 'CollectionA', _id: 'A2', key: 'obj.bool', value: 1, message: '1 should be a Boolean' } when it was inconsistent if
});

Example Format Part Option

Specify a function that returns an object or objects. Function have a parent in the arguments.

MasterCheck.Number

// For a integer number values of 0-10.
mastercheck.format('Number', {
    required: true, // Existence check. Default do not check.
    min: 0,  // Minimum value check. Default do not check.
    max: 10, // Maximum value check. Default do not check.
    integer: true // Integer check. Default do not check.
});

// For a number of any in [1, 3, 5].
mastercheck.format('Number', {
    required: true, // Existence check. Default do not check.
    select: [ 1, 3, 5 ] // Number match check. Default do not check.
});

MasterCheck.String

// For a string of 0-20 characters to match /^apple_/.
mastercheck.format('String', {
    required: true, // Existence check. Default do not check.
    minLength: 0, // Minimum number of characters check. Default do not check.
    maxLength: 20, // Maximum number of characters check. Default do not check.
    match: /^apple_/ // String match check. Value to use for the String#match. Default do not check.
});

// For a string of any in ['A', 'B', 'C'].
mastercheck.format('String', {
    required: true, // Existence check. Default do not check.
    select: [ 'A', 'B', 'C' ] // String match check. Default do not check.
});

MasterCheck.Boolean

// For a boolean.
mastercheck.format('Boolean', {
    required: true // Existence check. Default do not check.
});

MasterCheck.Object

// For a object. Include { bool: Boolean, num: Number }.
mastercheck.format('Object', {
    required: true // Existance check. Default do not check.
}, {
    bool: new mastercheck.Boolean(),
    num: new mastercheck.Number()
});

MasterCheck.Array

// For a array of 0-20 have length. Includ { bool: Boolean, num: Number }.
mastercheck.format('Array', {
    required: true // Existance check. Default do not check.
    minLength: 0, // Minimum length check. Default do not check.
    maxLength: 20, // Maximum length check. Default do not check.
}, [
    bool: new mastercheck.Boolean(),
    num: new mastercheck.Number()
]);

MasterCheck.Map

// For a object map. Key a string of 1-20 to match /^apple_/. Include { bool: Boolean, num: Number }.
mastercheck.format('Map', {
    maxLength: 20, // Maximum number of characters check. Default do not check.
    match: /^apple_/ // String match check. Value to use for the String#match. Default do not check.
}, {
    bool: new mastercheck.Boolean(),
    num: new mastercheck.Number()
});

Contribution

  1. Fork it ( https://github.com/iyu/mastercheck/fork )
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the npm test; npm run-script jshint command and confirm that it passes
  6. Create new Pull Request