node package manager

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