moldy-file-adapter

A file adapter for Moldy

TOC

moldy-file-adapter

Tell Moldy to use the file adapter.

// Moldy.use( require('moldy-file-adapter') ); 

should create by a property.

var personMoldy = Moldy.extend('person', {
    properties: {
        name: '',
        age: ''
    }
}).create();
personMoldy.name = 'David';
personMoldy.$save(function (_error) {
    personMoldy.name.should.eql('David');
    _done(_error);
});

define a JSON schema.

schema = {
    properties: {
        name: 'string',
        friends: [{
            keyless: true,
            properties: {
                name: {
                    type: 'string',
                    default: ''
                },
                age: {
                    type: 'number',
                    default: 0
                }
            }
        }]
    }
};

should create a new person so we can get it next.

var personMoldy = Moldy.extend('person', schema).create();
personMoldy.name = 'Mr David';
personMoldy.friends.push({
    name: 'leonie'
});
personMoldy.friends[0].age = ' 33';
personMoldy.friends.push({
    name: 'max'
});
personMoldy.$save(function (_error) {
    newPersonId = personMoldy.id;
    _done(_error);
});

should get by a id from the previous example.

var personMoldy = Moldy.extend('person', schema);
personMoldy.$findOne({
    id: newPersonId
}, function (_error_david) {
    if (_error) {
        return _done(_error);
    }
    var david = _david;
    david.name.should.eql('Mr David');
    david.friends.should.be.an.Array.and.have.a.lengthOf(2);
    david.friends[0].name.should.equal('leonie');
    david.friends[0].age.should.equal(33);
    david.friends[1].name.should.equal('max');
    david.friends[1].age.should.equal(0);
    david.$destroy(_done);
});

should get an array of models.

var personMoldy = Moldy.extend('person', {
    properties: {
        name: 'string',
        age: 'number'
    }
});
personMoldy.$find(function (_error_people) {
    if (_error) {
        return _done(_error);
    }
    _people.should.be.an.Array;
    _people.length.should.greaterThan(0);
    _people.forEach(function (_person) {
        _person.should.be.a.Moldy;
        _person.should.have.a.property('id');
        _person.should.have.a.property('name');
        _person.should.have.a.property('age');
        Object.keys(_person.$json()).should.have.a.lengthOf(3);
    });
    _done();
});

create a schema.

schema = {
    properties: {
        name: 'string',
        age: {
            type: 'number',
            default: 0
        },
        friends: [{
            keyless: true,
            properties: {
                name: {
                    type: 'string',
                    default: ''
                },
                age: {
                    type: 'number',
                    default: ''
                }
            }
        }]
    }
};

should save a model.

var personMoldy = Moldy.extend('person', schema);
personMoldy.$findOne(function (_error_person) {
    if (_error) {
        return _done(_error);
    }
    var person = _person;
    key = person.id;
    person.name = 'Mr David';
    person.friends.push({
        name: 'leonie'
    });
    person.friends.push({
        name: 'max'
    });
    person.friends.push({
        name: 'david'
    });
    person.$save(function (_error) {
        if (_error) {
            return _done(_error);
        }
        var newPersonMoldy = Moldy.extend('person', schema);
        newPersonMoldy.$findOne({
            id: key
        }, function (_errornewPerson) {
            newPerson.id.should.equal(key);
            newPerson.friends.splice(1, 1);
            newPerson.$save(function (_error) {
                if (_error) {
                    return _done(_error);
                }
                var newNewPersonMoldy = Moldy.extend('person', schema);
                newNewPersonMoldy.$findOne({
                    id: key
                }, function (_error_newNewPersonMoldy) {
                    _newNewPersonMoldy.friends.should.have.a.lengthOf(2);
                    _newNewPersonMoldy.friends[1].name.should.equal('david');
                    _done();
                });
            });
        });
    });
});

define a JSON schema.

schema = {
    properties: {
        name: 'string'
    }
};

should destroy all the models.

var personMoldy = Moldy.extend('person', schema);
personMoldy.$find(function (_error_guys) {
    _guys.length.should.be.greaterThan(0);
    var deleteGuy = function (_guy) {
        personMoldy.$find(function (_error_guys) {
            if (_guys.length === 0) {
                return _done();
            }
            var guy = Moldy.extend('person', schema);
            guy.$findOne({
                id: _guys[0].id
            }, function (_error_guy) {
                if (_error) {
                    return _done(_error);
                }
                _guy.$destroy(function (_error) {
                    if (_error) {
                        return _done(_error);
                    }
                    deleteGuy();
                });
            });
        });
    };
    deleteGuy();
});