digger-contracts

The contract factory for digger server requests

npm install digger-contracts
1 downloads in the last day
17 downloads in the last week
100 downloads in the last month

digger-contracts

Build status

The contract factory for digger server requests

installation

$ npm install digger-contracts

usage

There are four types of contract that digger can resolve:

  • select - load data from below a container using a selector filter
  • append - add containers to another container
  • save - update the data for a container
  • remove - remove a container

select example

Generate a select contract from a container by running the container as a function or running the 'select' method.

You give the selector and context as arguments - the context is piped into the selector.

var container = $digger.connect('/my/location');
var contract = container('folder.red', '#top');

console.log(contract.parse());

/*
{
    method:'post',
    url:'/select',
    headers:{
        'x-digger-selector':'folder.red',
        'x-digger-context':'#top'
    }
    body:[
        '/my/location'
    ]
}    
*/

append example

Generate an append contract by appending a container to another container:

var container = $digger.connect('/my/location');

var child = $digger.create('folder', {
    name:'test'
})

var contract = container.append(child);

console.log(contract.parse());


/*

    {
        method:'post',
        url:'/my/location',
        body:[{
            name:'test',
            _digger:{
                tag:'folder',
                diggerid:3249394383838,
                path:'/my/location',
                inode:'df9f83'
            }
        }]
    }

*/

save example

Generate a save contract by calling the save method on a container:

var warehouse = $digger.connect('/my/location');

warehouse('folder.red').ship(function(folder){
    var contract = folder.attr('price', 34).save();

    console.log(contract.parse());
})

/*

    {
        method:'put',
        url:'/data/my/location/343fc3/33f33f',
        body:{
            name:'item',
            price:34,
            _digger:{
                path:'/my/location/343fc3/33f33f',
                tag:'folder',
                class:['red']
            }
        }
    }

*/

remove example

Generate a remove contract:

var warehouse = $digger.connect('/my/location');

warehouse('folder.red').ship(function(folder){
    var contract = folder.remove();

    console.log(contract.parse());
})

/*

    {
        method:'delete',
        url:'/data/my/location/343fc3/33f33f'
    }

*/
npm loves you