1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | var CRUD = function( options ){
|
8 |
|
9 |
|
10 | this.db = options.db;
|
11 |
|
12 | }
|
13 |
|
14 | CRUD.prototype = {
|
15 |
|
16 | constructor: CRUD,
|
17 |
|
18 | create: function( data, callback ){
|
19 |
|
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;
|
24 |
|
25 | if( data.refresh_token) expires += (60 * 86400000);
|
26 |
|
27 | var ttl = Math.floor( expires / 1000 );
|
28 |
|
29 | data = JSON.stringify(data);
|
30 |
|
31 | this.db.setex( key, ttl, data, function(err, result){
|
32 | if(err) return callback(err);
|
33 |
|
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);
|
41 |
|
42 | this.db.get( key, function(err, data){
|
43 | if(err) return callback(err);
|
44 |
|
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 |
|
54 | this.db.del( key, function(err, data){
|
55 | if(err) return callback(err);
|
56 | callback( null, true );
|
57 | });
|
58 | },
|
59 |
|
60 | query: function( query, callback ){
|
61 | var key = query.id || false;
|
62 | if( !key ) return callback(null, false);
|
63 |
|
64 | this.db.get( key, function(err, data){
|
65 | if(err) return callback(err);
|
66 |
|
67 | data = JSON.parse( data.toString() );
|
68 | callback( null, data );
|
69 | });
|
70 | }
|
71 | }
|
72 |
|
73 |
|
74 | module.exports = CRUD;
|