UNPKG

1.69 kBJavaScriptView Raw
1/**
2 * Store: Memory
3 * - Saving data using the memory
4 * Note: Highly inefficient & unreliable - do NOT use in production
5**/
6
7var CRUD = function( options ){
8
9 // use the built-in methods
10 this.db = db;
11
12}
13
14CRUD.prototype = {
15
16 constructor: CRUD,
17
18 create: function( data, callback ){
19 this.db.create( data, callback );
20 },
21
22 read: function(query, callback){
23 this.db.read( query, callback );
24 },
25
26 destroy: function(item, callback){
27 this.db.destroy( item, callback );
28 }
29}
30
31// Helpers
32var data = {};
33
34var db = {
35
36 create: function( item, callback ){
37 var key = item.id || false;
38 if( !key ) return callback(null, false);
39 // check if the item exists first?
40 data[key] = item;
41 return callback(null, true);
42 },
43
44 read: function( query, callback ){
45 query = query || {};
46 var key = query.id || "*";
47 // return all
48 if( key == "*" ) return callback(null, data);
49 var value = query[key];
50 // return specific
51 if( data[key] ) return callback(null, data[key]);
52 return callback(null, false);
53 },
54
55 destroy: function( item, callback ){
56 var key = item.id || false;
57 if( !key ) return callback(null, false);
58 delete data[key];
59 // assume only one item for every key
60 return callback(null, true);
61 },
62
63 query: function( query, callback ){
64 // loop through the stored data
65 for( var i in data ){
66 // try to match supplied data
67 var valid = false;
68 for(var j in query){
69 // stop the lop if we found one inconsistency
70 if( data[i][j] != query[j] ){
71 valid = false;
72 break;
73 }
74 valid = true;
75 }
76 // if all conditions are met...
77 if( valid ) return callback(null, data[i]);
78 }
79 return callback(null, false);
80 }
81
82}
83
84
85module.exports = CRUD;