@@ -240,6 +240,52 @@ function matchTsquery(tab, wrds, tsv='"tsvector"', opt={}) {
240240 z += ';\n' ;
241241 return z ;
242242}
243+
244+ function _format ( obj , fmt , sep , i , val ) {
245+ var a = [ ] , ve = val instanceof Array ;
246+ var i = i || ( ve ? val . length : 0 ) ;
247+ for ( var k in obj ) {
248+ var v = obj [ k ] ;
249+ a . push ( fmt . replace ( / % k / g, k ) . replace ( / % v / g, v ) . replace ( / % i / g, i ++ ) ) ;
250+ if ( ve ) val . push ( v ) ;
251+ }
252+ return a . join ( sep ) ;
253+ }
254+
255+ function _array ( x ) {
256+ if ( x instanceof Array ) return x ;
257+ if ( x == null || typeof x === 'string' || typeof x [ Symbol . iterator ] !== 'function' ) return [ x ] ;
258+ return Array . from ( x ) ;
259+ }
260+
261+ function createTableData ( tab , col , key ) {
262+ return { 'query' :
263+ `CREATE TABLE IF NOT EXISTS "${ tab } " (` +
264+ `${ _format ( col , '"%k" %v' ) } ` +
265+ ( key ? `,PRIMARY KEY(${ _format ( _array ( key ) , '"%v"' ) } )` : `` ) + `);`
266+ } ;
267+ }
268+
269+ function updateData ( tab , set , whr , op , sep ) {
270+ var par = [ ] , set = _format ( set || { } , '"%k" = $%i' , `, ` , 1 , par ) ;
271+ var exp = _format ( whr || { } , `"%k" ${ op || '=' } $%i` , ` ${ sep || 'AND' } ` , par . length + 1 , par ) ;
272+ return { 'query' : `UPDATE "${ tab } " SET ${ set } ${ exp ? ' WHERE ' + exp : '' } ;` , 'data' : par } ;
273+ }
274+
275+ function selectData ( tab , whr , op , sep ) {
276+ var par = [ ] , exp = _format ( whr || { } , `"%k" ${ op || '=' } $%i` , ` ${ sep || 'AND' } ` , 1 , par ) ;
277+ return { 'query' : `SELECT * FROM "${ tab } "${ exp ? ' WHERE ' + exp : '' } ;` , 'data' : par } ;
278+ }
279+
280+ function insertIntoData ( tab , vals ) {
281+ var par = [ ] , into = _format ( vals || { } , '"%k"' , `, ` , 1 , par ) , vals = _format ( par , '$%i' , ', ' , 1 ) ;
282+ return { 'query' : `INSERT INTO "${ tab } " (${ into } ) VALUES (${ vals } );` , 'data' : par } ;
283+ }
284+
285+ function deleteData ( tab , whr , op , sep ) {
286+ var par = [ ] , exp = _format ( whr || { } , `"%k" ${ op || '=' } $%i` , ` ${ sep || 'AND' } ` , 1 , par ) ;
287+ return { 'query' : `DELETE FROM "${ tab } "${ exp ? ' WHERE ' + exp : '' } ;` , 'data' : par } ;
288+ }
243289exports . OPERATORS = OPERATORS ;
244290exports . OPERAND_COUNT = OPERAND_COUNT ;
245291exports . createTable = createTable ;
0 commit comments