@@ -139,7 +139,7 @@ OpenWrap.ch.prototype.__types = {
139
139
this . __channels [ aName ] . remove ( ak ) ;
140
140
}
141
141
} ,
142
- db2 : {
142
+ db : {
143
143
__options : { } ,
144
144
create : function ( aName , shouldCompress , options ) {
145
145
options = _$ ( options , "options" ) . isMap ( ) . default ( { } ) ;
@@ -208,19 +208,36 @@ OpenWrap.ch.prototype.__types = {
208
208
}*/
209
209
} ,
210
210
set : function ( aName , aK , aV , aTimestamp , x ) {
211
- /*var i = this.get(aName, aK);
211
+ var options = this . __options [ aName ] ;
212
+
213
+ var i = this . get ( aName , aK ) ;
212
214
try {
215
+ var wset = [ ] , wku = [ ] , wv = [ ] , wk = [ ] ;
216
+
213
217
if ( isDef ( i ) ) {
214
- this.__db[aName].us("update " + this.__table[aName] + " set value = ?, ts = ? where key = ?", [stringify(aV), aTimestamp, stringify(aK)], true);
218
+ for ( var ii in aV ) {
219
+ wset . push ( ( options . cs ? "\"" + ii + "\"" : ii ) + " = ?" ) ;
220
+ wv . push ( aV [ ii ] ) ;
221
+ }
222
+ for ( var ii in aK ) {
223
+ if ( isDef ( options . keys ) && options . keys . indexOf ( ( options . cs ? "\"" + ii + "\"" : ii ) ) < 0 ) continue ;
224
+ wku . push ( ( options . cs ? "\"" + ii + "\"" : ii ) + " = ?" ) ;
225
+ wv . push ( aK [ ii ] ) ;
226
+ }
227
+ options . db . us ( "update " + options . from + " set " + wset . join ( ", " ) + " where " + wku . join ( " AND " ) , wv , true ) ;
215
228
} else {
216
- this.__db[aName].us("insert into " + this.__table[aName] + " (key, ts, value) values (?, ?, ?)", [stringify(aK), aTimestamp, stringify(aV)], true);
229
+ for ( var ii in aV ) {
230
+ wk . push ( ( options . cs ? "\"" + ii + "\"" : ii ) ) ;
231
+ wv . push ( aV [ ii ] ) ;
232
+ }
233
+ options . db . us ( "insert into " + options . from + " (" + wk . join ( ", " ) + ") values (" + wv . map ( r => "?" ) . join ( ", " ) + ")" , wv , true ) ;
217
234
}
218
- this.__db[aName] .commit();
235
+ options . db . commit ( ) ;
219
236
} catch ( e ) {
220
- this.__db[aName] .rollback();
237
+ options . db . rollback ( ) ;
221
238
throw e ;
222
239
}
223
- return aK;*/
240
+ return aK ;
224
241
} ,
225
242
setAll : function ( aName , aKs , aVs , aTimestamp ) {
226
243
for ( var i in aVs ) {
@@ -234,51 +251,73 @@ OpenWrap.ch.prototype.__types = {
234
251
} ,
235
252
get : function ( aName , aK , x ) {
236
253
var options = this . __options [ aName ] ;
237
- var lst = ( isDef ( options . keys ) ? options . keys . join ( ", " ) : "*" ) ;
238
- var w = "" ;
254
+ var lst = "*" ;
255
+ var w = [ ] , wv = [ ] ;
239
256
for ( var ii in aK ) {
240
- w += " " + ( options . cs ? "\"" + ii + "\"" : ii ) + " = " + ( isNumber ( aK [ ii ] ) ? aK [ ii ] : "'" + aK [ ii ] + "'" ) ;
241
- w += "," ;
257
+ if ( isDef ( options . keys ) && options . keys . indexOf ( ( options . cs ? "\"" + ii + "\"" : ii ) ) < 0 ) continue ;
258
+ w . push ( ( options . cs ? "\"" + ii + "\"" : ii ) + " = ?" ) ;
259
+ wv . push ( aK [ ii ] ) ;
242
260
}
243
- w = w . substr ( 0 , w . length - 1 ) ;
244
261
245
262
var res ;
246
263
try {
247
- var res = options . db . q ( "select " + lst + " from " + options . from + " where " + w ) ;
248
- if ( isDef ( res ) && isArray ( res ) && res . length > 0 ) {
249
- return res [ 0 ] ;
264
+ var res = options . db . qs ( "select " + lst + " from " + options . from + " where " + w . join ( " and " ) , wv , true ) ;
265
+ if ( isDef ( res ) && isArray ( res . results ) && res . results . length > 0 ) {
266
+ return res . results [ 0 ] ;
250
267
} else {
251
268
return void 0 ;
252
269
}
253
270
} catch ( e ) {
254
271
return String ( e ) ;
255
272
}
273
+ } ,
274
+ getAll : function ( aName , full ) {
275
+ var options = this . __options [ aName ] ;
276
+ var res = [ ] , wv = [ ] , wk = [ ] , w = "" ;
277
+ if ( isDef ( full ) && isMap ( full ) ) {
278
+ for ( var ii in full ) {
279
+ wk . push ( ( options . cs ? "\"" + ii + "\"" : ii ) + " = ?" ) ;
280
+ wv . push ( full [ ii ] ) ;
281
+ }
282
+ w = " where " + wk . join ( " and " ) ;
283
+ }
256
284
285
+ try {
286
+ res = options . db . qs ( "select * from " + options . from + w , wv , true ) . results ;
287
+ } catch ( e ) {
288
+ return String ( e ) ;
289
+ }
257
290
return res ;
258
- } ,
291
+ } ,
259
292
pop : function ( aName ) {
260
293
var aKs = this . getSortedKeys ( aName ) ;
261
294
var aK = aKs [ aKs . length - 1 ] ;
262
- var aV = this . get ( aName , aK ) ;
263
295
return aK ;
264
296
} ,
265
297
shift : function ( aName ) {
266
298
var aK = this . getSortedKeys ( aName ) [ 0 ] ;
267
- var aV = this . get ( aName , aK ) ;
268
299
return aK ;
269
300
} ,
270
301
unset : function ( aName , aK , aTimestamp ) {
271
302
var options = this . __options [ aName ] ;
303
+
304
+ var w = [ ] , wv = [ ] ;
305
+ for ( var ii in aK ) {
306
+ if ( isDef ( options . keys ) && options . keys . indexOf ( ( options . cs ? "\"" + ii + "\"" : ii ) ) < 0 ) continue ;
307
+ w . push ( ( options . cs ? "\"" + ii + "\"" : ii ) + " = ?" ) ;
308
+ wv . push ( aK [ ii ] ) ;
309
+ }
310
+
272
311
try {
273
- options . db . us ( "delete " + options . from + " where key = ?" , [ stringify ( aK ) ] , true ) ;
312
+ options . db . us ( "delete " + options . from + " where " + w . join ( " and " ) , wv , true ) ;
274
313
options . db . commit ( ) ;
275
314
} catch ( e ) {
276
315
options . db . rollback ( ) ;
277
316
throw e ;
278
317
}
279
318
}
280
319
} ,
281
- db : {
320
+ dbOld : {
282
321
__db : { } ,
283
322
__table : { } ,
284
323
create : function ( aName , shouldCompress , options ) {
0 commit comments