11/**
2- * jsql-official - v3.1.2
2+ * jsql-official - v3.2.1
33 * A persistent SQL database.
44 * @author Rob Parham
55 * @website http://pamblam.github.io/jSQL/
@@ -156,13 +156,13 @@ function jSQLDataTypeList(){
156156 } , {
157157 type : "ENUM" ,
158158 serialize : function ( value , args ) {
159- if ( value === null ) return "-null- " ;
159+ if ( value === null ) return "jsqlNull " ;
160160 for ( var i = args . length ; i -- ; )
161161 if ( value === removeQuotes ( args [ i ] ) ) return value ;
162162 return _throw ( new jSQL_Error ( "0068" ) ) ;
163163 } ,
164164 unserialize : function ( value , args ) {
165- if ( value === "-null- " ) return null ;
165+ if ( value === "jsqlNull " ) return null ;
166166 for ( var i = args . length ; i -- ; )
167167 if ( value === removeQuotes ( args [ i ] ) ) return value ;
168168 return _throw ( new jSQL_Error ( "0068" ) ) ;
@@ -240,18 +240,18 @@ function jSQLDataTypeList(){
240240 type : "JSON" ,
241241 aliases : [ "ARRAY" , "OBJECT" ] ,
242242 serialize : function ( value ) {
243- if ( value === null ) return "null " ;
243+ if ( value === null ) return "jsqlNull " ;
244244 if ( typeof value === "string" ) return value ;
245245 return JSON . stringify ( value ) ;
246246 } ,
247247 unserialize : function ( value ) {
248- if ( value === "null " ) return null ;
248+ if ( value === "jsqlNull " ) return null ;
249249 return JSON . parse ( value ) ;
250250 }
251251 } , {
252252 type : "FUNCTION" ,
253253 serialize : function ( value ) {
254- if ( value === null ) return "null " ;
254+ if ( value === null ) return "jsqlNull " ;
255255 if ( typeof value !== "function" ) {
256256 var f = null ;
257257 try {
@@ -263,7 +263,7 @@ function jSQLDataTypeList(){
263263 return "jSQLFunct-" + value . toString ( ) ;
264264 } ,
265265 unserialize : function ( value ) {
266- if ( value === "null " ) return null ;
266+ if ( value === "jsqlNull " ) return null ;
267267 var p = value . split ( "-" ) ;
268268 if ( p . shift ( ) !== "jSQLFunct" ) return _throw ( new jSQL_Error ( "0001" ) ) ;
269269 p = value . split ( "-" ) ;
@@ -279,22 +279,22 @@ function jSQLDataTypeList(){
279279 type : "BOOLEAN" ,
280280 aliases : [ 'BOOL' ] ,
281281 serialize : function ( value ) {
282- if ( value === null ) return "null " ;
282+ if ( value === null ) return "jsqlNull " ;
283283 return value === true || value . toUpperCase ( ) == "TRUE" || value == 1 ?
284284 "1" : "0" ;
285285 } ,
286286 unserialize : function ( value ) {
287- if ( value === "null " ) return null ;
287+ if ( value === "jsqlNull " ) return null ;
288288 return value === true || value . toUpperCase ( ) == "TRUE" || value == 1 ;
289289 }
290290 } , {
291291 type : "CHAR" ,
292292 serialize : function ( value , args ) {
293- if ( value === null ) return "-null- " ;
293+ if ( value === null ) return "jsqlNull " ;
294294 return "" + value ;
295295 } ,
296296 unserialize : function ( value , args ) {
297- if ( value === "-null- " ) return null ;
297+ if ( value === "jsqlNull " ) return null ;
298298 var targetLength = args [ 0 ] >> 0 , padString = ' ' ;
299299 if ( value . length > targetLength ) return value . substr ( 0 , args [ 0 ] ) ;
300300 else {
@@ -309,35 +309,35 @@ function jSQLDataTypeList(){
309309 type : "VARCHAR" ,
310310 aliases : [ "LONGTEXT" , "MEDIUMTEXT" ] ,
311311 serialize : function ( value , args ) {
312- if ( value === null ) return "-null- " ;
312+ if ( value === null ) return "jsqlNull " ;
313313 return "" + value ;
314314 } ,
315315 unserialize : function ( value , args ) {
316- if ( value === "-null- " ) return null ;
316+ if ( value === "jsqlNull " ) return null ;
317317 return "" + value ;
318318 }
319319 } , {
320320 type : "DATE" ,
321321 serialize : function ( value ) {
322- if ( value === null ) return "-null- " ;
322+ if ( value === null ) return "jsqlNull " ;
323323 if ( ! ( value instanceof Date ) ) return new Date ( value ) . getTime ( ) ;
324324 return value . getTime ( ) ;
325325 } ,
326326 unserialize : function ( value ) {
327- if ( value === "-null- " ) return null ;
327+ if ( value === "jsqlNull " ) return null ;
328328 return new Date ( value ) ;
329329 }
330330 } , {
331331 type : "AMBI" ,
332332 serialize : function ( value ) {
333- if ( value === null ) return "-null- " ;
333+ if ( value === null ) return "jsqlNull " ;
334334 if ( value instanceof Date ) return value . getTime ( ) ;
335335 if ( typeof value === "function" ) return "jSQLFunct-" + value . toString ( ) ;
336336 if ( ! isNaN ( parseFloat ( value ) ) && isFinite ( value ) ) return value ;
337337 return "" + value ;
338338 } ,
339339 unserialize : function ( value ) {
340- if ( value === "-null- " ) return null ;
340+ if ( value === "jsqlNull " ) return null ;
341341 if ( typeof value === "string" ) {
342342 if ( value . split ( "-" ) [ 0 ] === "jSQLFunct" ) {
343343 var p = value . split ( "-" ) ;
@@ -2748,8 +2748,75 @@ function removeQuotes(str){
27482748 return str ;
27492749}
27502750
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+
27512818return {
2752- version : "3.1.2 " ,
2819+ version : "3.2.1 " ,
27532820 tables : { } ,
27542821 query : jSQLParseQuery ,
27552822 createTable : createTable ,
@@ -2767,7 +2834,9 @@ return {
27672834 rollback : persistenceManager . rollback ,
27682835 setApiPriority : persistenceManager . setApiPriority ,
27692836 getApi : persistenceManager . getApi ,
2770- tokenize : tokenize
2837+ tokenize : tokenize ,
2838+ export : jsql_export ,
2839+ import : jsql_import
27712840} ;
27722841
27732842} ) ( ) ;
0 commit comments