Repository navigation
Expand file tree
/
Copy pathindex.js
More file actions
58 lines (47 loc) · 1.46 KB
/
Copy pathindex.js
File metadata and controls
58 lines (47 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
'use strict';
const async = require( 'async' );
module.exports = {
add_driver: function( driver ) {
this.drivers = this.drivers || [];
this.drivers.push( driver );
return true;
},
remove_driver: function( driver ) {
this.drivers = this.drivers || [];
const driver_index = this.drivers.indexOf( driver );
if ( driver_index < 0 ) {
return false;
}
this.drivers.splice( driver_index, 1 );
return true;
},
put: function( object, callback ) {
this.drivers = this.drivers || [];
async.each( this.drivers, ( driver, next ) => {
driver.put( object, next );
}, callback );
},
get: function( id, callback ) {
this.drivers = this.drivers || [];
const readable_driver = this.drivers.find( driver => {
return driver && driver.options && driver.options.readable;
} );
if ( !readable_driver ) {
callback( {
error: 'missing readable driver'
} );
return;
}
readable_driver.get( id, callback );
},
delete: function( id, callback ) {
this.drivers = this.drivers || [];
async.each( this.drivers, ( driver, next ) => {
if ( driver.options && driver.options.ignore_delete ) {
next();
return;
}
driver.delete( id, next );
}, callback );
}
};