1
1
/**
2
- * jsql-official - v3.1.2
2
+ * jsql-official - v3.2.1
3
3
* A persistent SQL database.
4
4
* @author Rob Parham
5
5
* @website http://pamblam.github.io/jSQL/
@@ -156,13 +156,13 @@ function jSQLDataTypeList(){
156
156
} , {
157
157
type : "ENUM" ,
158
158
serialize : function ( value , args ) {
159
- if ( value === null ) return "-null- " ;
159
+ if ( value === null ) return "jsqlNull " ;
160
160
for ( var i = args . length ; i -- ; )
161
161
if ( value === removeQuotes ( args [ i ] ) ) return value ;
162
162
return _throw ( new jSQL_Error ( "0068" ) ) ;
163
163
} ,
164
164
unserialize : function ( value , args ) {
165
- if ( value === "-null- " ) return null ;
165
+ if ( value === "jsqlNull " ) return null ;
166
166
for ( var i = args . length ; i -- ; )
167
167
if ( value === removeQuotes ( args [ i ] ) ) return value ;
168
168
return _throw ( new jSQL_Error ( "0068" ) ) ;
@@ -240,18 +240,18 @@ function jSQLDataTypeList(){
240
240
type : "JSON" ,
241
241
aliases : [ "ARRAY" , "OBJECT" ] ,
242
242
serialize : function ( value ) {
243
- if ( value === null ) return "null " ;
243
+ if ( value === null ) return "jsqlNull " ;
244
244
if ( typeof value === "string" ) return value ;
245
245
return JSON . stringify ( value ) ;
246
246
} ,
247
247
unserialize : function ( value ) {
248
- if ( value === "null " ) return null ;
248
+ if ( value === "jsqlNull " ) return null ;
249
249
return JSON . parse ( value ) ;
250
250
}
251
251
} , {
252
252
type : "FUNCTION" ,
253
253
serialize : function ( value ) {
254
- if ( value === null ) return "null " ;
254
+ if ( value === null ) return "jsqlNull " ;
255
255
if ( typeof value !== "function" ) {
256
256
var f = null ;
257
257
try {
@@ -263,7 +263,7 @@ function jSQLDataTypeList(){
263
263
return "jSQLFunct-" + value . toString ( ) ;
264
264
} ,
265
265
unserialize : function ( value ) {
266
- if ( value === "null " ) return null ;
266
+ if ( value === "jsqlNull " ) return null ;
267
267
var p = value . split ( "-" ) ;
268
268
if ( p . shift ( ) !== "jSQLFunct" ) return _throw ( new jSQL_Error ( "0001" ) ) ;
269
269
p = value . split ( "-" ) ;
@@ -279,22 +279,22 @@ function jSQLDataTypeList(){
279
279
type : "BOOLEAN" ,
280
280
aliases : [ 'BOOL' ] ,
281
281
serialize : function ( value ) {
282
- if ( value === null ) return "null " ;
282
+ if ( value === null ) return "jsqlNull " ;
283
283
return value === true || value . toUpperCase ( ) == "TRUE" || value == 1 ?
284
284
"1" : "0" ;
285
285
} ,
286
286
unserialize : function ( value ) {
287
- if ( value === "null " ) return null ;
287
+ if ( value === "jsqlNull " ) return null ;
288
288
return value === true || value . toUpperCase ( ) == "TRUE" || value == 1 ;
289
289
}
290
290
} , {
291
291
type : "CHAR" ,
292
292
serialize : function ( value , args ) {
293
- if ( value === null ) return "-null- " ;
293
+ if ( value === null ) return "jsqlNull " ;
294
294
return "" + value ;
295
295
} ,
296
296
unserialize : function ( value , args ) {
297
- if ( value === "-null- " ) return null ;
297
+ if ( value === "jsqlNull " ) return null ;
298
298
var targetLength = args [ 0 ] >> 0 , padString = ' ' ;
299
299
if ( value . length > targetLength ) return value . substr ( 0 , args [ 0 ] ) ;
300
300
else {
@@ -309,35 +309,35 @@ function jSQLDataTypeList(){
309
309
type : "VARCHAR" ,
310
310
aliases : [ "LONGTEXT" , "MEDIUMTEXT" ] ,
311
311
serialize : function ( value , args ) {
312
- if ( value === null ) return "-null- " ;
312
+ if ( value === null ) return "jsqlNull " ;
313
313
return "" + value ;
314
314
} ,
315
315
unserialize : function ( value , args ) {
316
- if ( value === "-null- " ) return null ;
316
+ if ( value === "jsqlNull " ) return null ;
317
317
return "" + value ;
318
318
}
319
319
} , {
320
320
type : "DATE" ,
321
321
serialize : function ( value ) {
322
- if ( value === null ) return "-null- " ;
322
+ if ( value === null ) return "jsqlNull " ;
323
323
if ( ! ( value instanceof Date ) ) return new Date ( value ) . getTime ( ) ;
324
324
return value . getTime ( ) ;
325
325
} ,
326
326
unserialize : function ( value ) {
327
- if ( value === "-null- " ) return null ;
327
+ if ( value === "jsqlNull " ) return null ;
328
328
return new Date ( value ) ;
329
329
}
330
330
} , {
331
331
type : "AMBI" ,
332
332
serialize : function ( value ) {
333
- if ( value === null ) return "-null- " ;
333
+ if ( value === null ) return "jsqlNull " ;
334
334
if ( value instanceof Date ) return value . getTime ( ) ;
335
335
if ( typeof value === "function" ) return "jSQLFunct-" + value . toString ( ) ;
336
336
if ( ! isNaN ( parseFloat ( value ) ) && isFinite ( value ) ) return value ;
337
337
return "" + value ;
338
338
} ,
339
339
unserialize : function ( value ) {
340
- if ( value === "-null- " ) return null ;
340
+ if ( value === "jsqlNull " ) return null ;
341
341
if ( typeof value === "string" ) {
342
342
if ( value . split ( "-" ) [ 0 ] === "jSQLFunct" ) {
343
343
var p = value . split ( "-" ) ;
@@ -2748,8 +2748,75 @@ function removeQuotes(str){
2748
2748
return str ;
2749
2749
}
2750
2750
2751
+ function jsql_export ( create_tables , table_names ) {
2752
+ create_tables = create_tables || true ;
2753
+ table_names = table_names || [ ] ;
2754
+ var dump_buffer = [ ] ;
2755
+ for ( var table in jSQL . tables ) {
2756
+ if ( ! jSQL . tables . hasOwnProperty ( table ) ) continue ;
2757
+ if ( ! table_names . length || ~ table_names . indexOf ( table ) ) {
2758
+ if ( create_tables ) {
2759
+ var table_buffer = [ ] ;
2760
+ for ( var i = 0 ; i < jSQL . tables [ table ] . columns . length ; i ++ ) {
2761
+ var col_buffer = [ ] ;
2762
+ col_buffer . push ( "`" + jSQL . tables [ table ] . columns [ i ] + "` " ) ;
2763
+ var args = "" ;
2764
+ if ( jSQL . tables [ table ] . types [ i ] . args . length ) args = JSON . stringify ( jSQL . tables [ table ] . types [ i ] . args ) . trim ( ) . slice ( 1 , - 1 ) ;
2765
+ col_buffer . push ( jSQL . tables [ table ] . types [ i ] . type + "(" + args + ") " ) ;
2766
+ col_buffer . push ( jSQL . tables [ table ] . types [ i ] . null ? 'NULL ' : 'NOT NULL ' ) ;
2767
+ if ( jSQL . tables [ table ] . types [ i ] . default ) col_buffer . push ( 'DEFAULT ' + JSON . stringify ( jSQL . tables [ table ] . types [ i ] . default ) + ' ' ) ;
2768
+ if ( jSQL . tables [ table ] . columns [ i ] === jSQL . tables [ table ] . auto_inc_col ) col_buffer . push ( 'AUTO_INCREMENT' ) ;
2769
+ table_buffer . push ( "\n\t" + ( col_buffer . join ( '' ) . trim ( ) ) )
2770
+ }
2771
+ if ( jSQL . tables [ table ] . keys . primary . column ) {
2772
+ col_buffer = [ ] ;
2773
+ if ( Array . isArray ( jSQL . tables [ table ] . keys . primary . column ) ) {
2774
+ for ( var i = 0 ; i < jSQL . tables [ table ] . keys . primary . column . length ; i ++ ) {
2775
+ col_buffer . push ( '`' + jSQL . tables [ table ] . keys . primary . column [ i ] + '`' ) ;
2776
+ }
2777
+ } else {
2778
+ col_buffer . push ( '`' + jSQL . tables [ table ] . keys . primary . column + '`' ) ;
2779
+ }
2780
+ table_buffer . push ( "\n\tPRIMARY KEY (" + ( col_buffer . join ( ',' ) ) + ")" ) ;
2781
+ }
2782
+ if ( jSQL . tables [ table ] . keys . unique . length ) {
2783
+ for ( var n = 0 ; n < jSQL . tables [ table ] . keys . unique . length ; n ++ ) {
2784
+ col_buffer = [ ] ;
2785
+ if ( Array . isArray ( jSQL . tables [ table ] . keys . unique [ n ] . column ) ) {
2786
+ for ( var i = 0 ; i < jSQL . tables [ table ] . keys . unique [ n ] . column . length ; i ++ ) {
2787
+ col_buffer . push ( '`' + jSQL . tables [ table ] . keys . unique [ n ] . column [ i ] + '`' ) ;
2788
+ }
2789
+ } else {
2790
+ col_buffer . push ( '`' + jSQL . tables [ table ] . keys . unique [ n ] . column + '`' ) ;
2791
+ }
2792
+ table_buffer . push ( "\n\tUNIQUE KEY (" + ( col_buffer . join ( ',' ) ) + ")" ) ;
2793
+ }
2794
+ }
2795
+ dump_buffer . push ( 'CREATE TABLE `' + table + '` (' + ( table_buffer . join ( "," ) ) + "\n)" ) ;
2796
+ for ( var i = 0 ; i < jSQL . tables [ table ] . data . length ; i ++ ) {
2797
+ var values = JSON . stringify ( jSQL . tables [ table ] . data [ i ] ) . trim ( ) . slice ( 1 , - 1 ) . replace ( / " j s q l N u l l " / g, 'null' ) ;
2798
+ dump_buffer . push ( "INSERT INTO `" + table + "` (`" + ( jSQL . tables [ table ] . columns . join ( '`,`' ) ) + "`) VALUES (" + values + ")" ) ;
2799
+ }
2800
+ }
2801
+ }
2802
+ }
2803
+ var header = [ "-- Exported by jSQL v" + jSQL . version + " " + ( new Date ( ) . toUTCString ( ) ) ] ;
2804
+ var hwrapper = "-" . repeat ( header [ 0 ] . length ) ;
2805
+ header . unshift ( hwrapper ) ;
2806
+ header . push ( hwrapper ) ;
2807
+ return ( header . join ( "\n" ) ) + "\n" + ( dump_buffer . join ( ";\n" ) ) ;
2808
+ }
2809
+
2810
+
2811
+ function jsql_import ( dump ) {
2812
+ dump = dump . split ( ";\n" ) ;
2813
+ for ( var i = 0 ; i < dump . length ; i ++ ) {
2814
+ jSQL . query ( dump [ i ] ) . execute ( ) ;
2815
+ }
2816
+ }
2817
+
2751
2818
return {
2752
- version : "3.1.2 " ,
2819
+ version : "3.2.1 " ,
2753
2820
tables : { } ,
2754
2821
query : jSQLParseQuery ,
2755
2822
createTable : createTable ,
@@ -2767,7 +2834,9 @@ return {
2767
2834
rollback : persistenceManager . rollback ,
2768
2835
setApiPriority : persistenceManager . setApiPriority ,
2769
2836
getApi : persistenceManager . getApi ,
2770
- tokenize : tokenize
2837
+ tokenize : tokenize ,
2838
+ export : jsql_export ,
2839
+ import : jsql_import
2771
2840
} ;
2772
2841
2773
2842
} ) ( ) ;
0 commit comments