UNPKG

1.84 kBJavaScriptView Raw
1/**
2 * Store: Redis
3 * - Saving data using a Redis db
4**/
5
6
7var CRUD = function( options ){
8
9 // use the provided db (error control?)
10 this.db = options.db;
11
12}
13
14CRUD.prototype = {
15
16 constructor: CRUD,
17
18 create: function( data, callback ){
19 // fallbacks
20 data = data || {};
21 var key = data.id || false;
22 if( !key ) return callback(null, false);
23 var expires = (data.expires_in) ? parseInt(data.expires_in) : 86400000; // default one day...
24 // if refresh_token, add 60 days...
25 if( data.refresh_token) expires += (60 * 86400000); // plus 60 days for refresh_token
26 // convert ttl to seconds
27 var ttl = Math.floor( expires / 1000 );
28 // stringify data
29 data = JSON.stringify(data);
30 // connect to db
31 this.db.setex( key, ttl, data, function(err, result){
32 if(err) return callback(err);
33 // error control?
34 return callback( null, true );
35 });
36 },
37
38 read: function( query, callback ){
39 var key = query.id || "*";
40 if( !key ) return callback(null, false); // how to return all data?
41 // connect to db
42 this.db.get( key, function(err, data){
43 if(err) return callback(err);
44 // parse data into an object
45 data = JSON.parse( data.toString() );
46 callback( null, data );
47 });
48 },
49
50 destroy: function( item, callback ){
51 var key = item.id || false;
52 if( !key ) return callback(null, false);
53 // connect to db
54 this.db.del( key, function(err, data){
55 if(err) return callback(err);
56 callback( null, true );
57 });
58 },
59 // FIX THIS: query not implemented for redis yet...
60 query: function( query, callback ){
61 var key = query.id || false;
62 if( !key ) return callback(null, false);
63 // connect to db
64 this.db.get( key, function(err, data){
65 if(err) return callback(err);
66 // parse data into an object
67 data = JSON.parse( data.toString() );
68 callback( null, data );
69 });
70 }
71}
72
73
74module.exports = CRUD;