-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmkMongoEngine.js
103 lines (93 loc) · 4.34 KB
/
mkMongoEngine.js
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/* jshint -W030 */
// Defines a module that works in CommonJS and AMD: https://github.com/umdjs/umd/blob/master/nodeAdapter.js
if ( typeof module === 'object' && typeof define !== 'function' ) {
var define = function ( factory ) {
module.exports = factory( require, exports, module );
};
}
define( function ( require, exports, module ) {
// DB client: https://github.com/learnboost/mongoose
var Utils = require( './mkUtils.js' );
var MkMongoEngine = function ( client ) {
var DEBUG = true;
var _client = client;
var processOptions = function( opts ) {
return {
sort: ( opts && opts.sort ? opts.sort : {} )
};
};
return {
find: function ( table, params, callback, options ) {
var doneFn = ( callback ? callback : Utils.defer() );
var Table = _client.model( table ),
opts = processOptions( options );
Table.find( params ).setOptions( { lean: true } ).sort( opts.sort ).exec( function ( err, res ) {
Utils.done( doneFn, Utils.wrapError( err ), Utils.wrapResult( res, res ) );
} );
if ( doneFn && doneFn.promise ) return doneFn.promise;
},
findOne: function ( table, params, callback ) {
var doneFn = ( callback ? callback : Utils.defer() );
var Table = _client.model( table );
Table.findOne( params ).setOptions( { lean: true } ).exec( function ( err, res ) {
Utils.done( doneFn, Utils.wrapError( err ), Utils.wrapResult( res, res ) );
} );
if ( doneFn && doneFn.promise ) return doneFn.promise;
},
findWhere: function ( table, whereClause, params, callback ) {
return null; // not implemented
},
findOneWhere: function ( table, whereClause, params, callback ) {
return null; // not implemented
},
findAll: function ( table, callback, options ) {
return this.find( table, {}, callback, options );
},
insert: function ( table, obj, callback ) {
var doneFn = ( callback ? callback : Utils.defer() );
var Table = _client.model( table );
var item = new Table(), k;
for ( k in obj ) {
item[ k ] = obj[ k ];
}
item.save( function ( err, res ) {
Utils.done( doneFn, Utils.wrapError( err ), Utils.wrapResult( res, res ) );
} );
if ( doneFn && doneFn.promise ) return doneFn.promise;
},
update: function ( table, obj, params, callback ) {
var doneFn = ( callback ? callback : Utils.defer() );
var Table = _client.model( table );
Table.findOne( params ).exec( function ( err, res ) {
if ( res ) {
for ( var k in obj ) {
// console.log( k, obj[ k ] );
res[ k ] = obj[ k ];
}
res.save( function ( err, res ) {
Utils.done( doneFn, Utils.wrapError( err ), Utils.wrapResult( res, res ) );
} );
}
} );
if ( doneFn && doneFn.promise ) return doneFn.promise;
},
count: function ( table, callback ) {
var doneFn = ( callback ? callback : Utils.defer() );
var Table = _client.model( table );
Table.count( {}, function ( err, res ) {
Utils.done( doneFn, Utils.wrapError( err ), Utils.wrapResult( res, res ) );
} );
if ( doneFn && doneFn.promise ) return doneFn.promise;
},
delete: function ( table, params, callback ) {
var doneFn = ( callback ? callback : Utils.defer() );
var Table = _client.model( table );
Table.remove( params, function ( err, res ) {
Utils.done( doneFn, err, res );
} );
if ( doneFn && doneFn.promise ) return doneFn.promise;
}
};
};
return MkMongoEngine;
} );