Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

sql-extra

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sql-extra - npm Package Compare versions

Comparing version
0.1.4
to
0.1.5
+39
-24
index.js

@@ -20,14 +20,31 @@ // 0. @sql-extra/createindex (createIndex)

// 3. @sql-extra/insertinto (insertInto)
function addRow3(val, z='', i=0) {
if(i===0) {
for(var k in val)
z += `"${k}", `;
z = z.endsWith(', ')? z.substring(0, z.length-2):z;
z += ') VALUES\n(';
}
for(var k in val)
z += `'${val[k]}', `;
z = z.endsWith(', ')? z.substring(0, z.length-2):z;
z += '),\n(';
return z;
};
function stream3(tab, strm, opt={}) {
var i = -1, z = `INSERT INTO "${tab}" (`;
return new Promise((fres, frej) => {
strm.on('error', frej);
strm.on('data', (val) => z=addRow3(val, z, ++i));
strm.on('end', () => {
z = z.replace(/\),\n\($/, '')+')';
if(opt.pk) z += `\nON CONFLICT ("${opt.pk}") DO NOTHING`;
fres(z+';\n');
});
});
};
function insertInto(tab, vals, opt={}) {
var i = -1, z = `INSERT INTO "${tab}" (`;
for(var val of vals) {
if(++i===0) {
for(var k in val)
z += `"${k}", `;
z = z.replace(/, $/, '')+') VALUES\n(';
}
for(var k in val)
z += `'${val[k]}', `;
z = z.replace(/, $/, '')+'),\n(';
}
for(var val of vals)
z = addRow3(val, z, ++i);
z = z.replace(/\),\n\($/, '')+')';

@@ -37,21 +54,13 @@ if(opt.pk) z += `\nON CONFLICT ("${opt.pk}") DO NOTHING`;

};
insertInto.stream = stream3;
// 4. @sql-extra/setuptable (setupTable)
const COMMAND_DEFAULT4 = 'create table, create index, create view, insert into';
const CREATE_TABLE4 = /create\s*table/i;
const CREATE_INDEX4 = /create\s*index/i;
const CREATE_VIEW4 = /create\s*view/i;
const INSERT_INTO4 = /insert\s*into/i;
function setupTable(nam, cols, vals=null, opt={}) {
var cmd = opt.command||COMMAND_DEFAULT4;
var z = CREATE_TABLE4.test(cmd)? createTable(nam, cols, opt):'';
if(vals && INSERT_INTO4.test(cmd)) z += insertInto(nam, vals, opt);
function index4(nam, cols, opt={}, z='') {
if(opt.tsvector) {
var tv = tsvector(opt.tsvector);
if(CREATE_VIEW4.test(cmd)) z += createView(nam+'_tsvector', `SELECT *, ${tv} AS "tsvector" FROM "${nam}"`);
if(opt.index && CREATE_INDEX4.test(cmd)) z += createIndex(nam+'_tsvector_idx', nam, `(${tv})`, {method: 'GIN'});
z += createView(nam+'_tsvector', `SELECT *, ${tv} AS "tsvector" FROM "${nam}"`);
if(opt.index) z += createIndex(nam+'_tsvector_idx', nam, `(${tv})`, {method: 'GIN'});
}
if(opt.index && CREATE_INDEX4.test(cmd)) {
if(opt.index) {
for(var k in cols) {
if(cols[k]==null || cols[k]===opt.pk) continue;
if(cols[k]==null || k===opt.pk) continue;
var knam = k.replace(/\W+/g, '_').toLowerCase();

@@ -63,2 +72,8 @@ z += createIndex(`${nam}_${knam}_idx`, nam, `"${k}"`);

};
function setupTable(nam, cols, vals=null, opt={}, z='') {
z += createTable(nam, cols, opt);
if(vals) z += insertInto(nam, vals, opt);
return index4(nam, cols, opt, z);
};
setupTable.index = index4;
// 5. @sql-extra/tableexists (tableExists)

@@ -65,0 +80,0 @@ function tableExists(nam) {

{
"name": "sql-extra",
"version": "0.1.4",
"version": "0.1.5",
"description": "Extra methods for generating SQL commands.",

@@ -27,4 +27,4 @@ "main": "index.js",

"@sql-extra/createview": "^0.1.2",
"@sql-extra/insertinto": "^0.1.2",
"@sql-extra/setuptable": "^0.1.3",
"@sql-extra/insertinto": "^0.1.4",
"@sql-extra/setuptable": "^0.1.7",
"@sql-extra/tableexists": "^0.1.1",

@@ -31,0 +31,0 @@ "@sql-extra/tsvector": "^0.1.1"