File tree 2 files changed +54
-0
lines changed
2 files changed +54
-0
lines changed Original file line number Diff line number Diff line change
1
+
2
+ var quote = function ( data ) {
3
+ if ( typeof data == 'string' )
4
+ return "'" + data + "'" ;
5
+ return "'" + JSON . stringify ( data ) + "'"
6
+ }
7
+
8
+ var convertWrapper = function ( prefix , query ) {
9
+ return convert ( [ prefix ] , query ) ;
10
+ }
11
+
12
+ var convert = function ( prefix , query ) {
13
+ if ( typeof query == 'object' && ! Array . isArray ( query ) ) {
14
+ str = ''
15
+ for ( key in query ) {
16
+ if ( str != '' ) {
17
+ str += ' and ' ;
18
+ }
19
+
20
+ if ( key == '$or' ) {
21
+ str += '(' + query [ key ] . map ( function ( subquery ) { return convert ( prefix , subquery ) } )
22
+ . join ( ' OR ' ) + ')' ;
23
+ } else {
24
+ //key = key.replace(/\\./g, '->');
25
+ if ( typeof query [ key ] == 'object' ) {
26
+ str += convert ( prefix + '->' + "'" + key + "'" , query [ key ] ) ;
27
+ } else {
28
+ str += '(' + convert ( prefix + '->>' + "'" + key + "'" , query [ key ] ) + ')' ;
29
+ }
30
+ }
31
+ }
32
+ return str
33
+ } else {
34
+ if ( Array . isArray ( query ) ) {
35
+ return
36
+ } else {
37
+ return prefix + '=' + quote ( query ) ;
38
+ }
39
+ }
40
+ }
41
+
42
+ module . exports = convertWrapper ;
Original file line number Diff line number Diff line change
1
+ const assert = require ( 'assert' ) ;
2
+ var convert = require ( './index' )
3
+
4
+ console . log ( convert ( 'data' , { name : 'thomas' } ) ) ;
5
+ assert ( convert ( 'data' , { name : 'thomas' } ) == "(data->>'name'='thomas')" )
6
+
7
+ console . log ( convert ( 'data' , { $or : [ { name : 'thomas' } , { name : 'hansen' } ] } ) ) ;
8
+
9
+ console . log ( convert ( 'data' , { fullName : 'TH' , $or : [ { name : 'thomas' } , { name : 'hansen' } ] } ) ) ;
10
+ console . log ( convert ( 'data' , { test : { cat : { name : "oscar" } } } ) ) ;
11
+ console . log ( convert ( 'data' , { 'test.cat.name' : "oscar" } ) ) ;
12
+ console . log ( convert ( 'data' , { 'roles' : [ 'Admin' ] } ) ) ;
You can’t perform that action at this time.
0 commit comments