digger-contracts

The contract factory for digger server requests

digger-contracts

The contract factory for digger server requests

$ npm install digger-contracts

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

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'
    ]
}   
*/

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'
            }
        }]
    }
    
*/

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']
            }
        }
    }
    
*/

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'
    }
    
*/