Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

sql2json

Package Overview
Dependencies
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sql2json - npm Package Compare versions

Comparing version 1.2.0 to 1.2.1

24

lib/sql2json.js

@@ -38,2 +38,3 @@ const lexer = require('sql-parser').lexer;

const stack = [];
let findParen = false;
while (this.hasNext()) {

@@ -53,4 +54,12 @@ const token = this.next();

case 'SEPARATOR':
if (!findParen) {
return {
value: functionName,
type: 'literal',
alias: null
};
}
break;
case 'LEFT_PAREN':
findParen = true;
break;

@@ -70,2 +79,8 @@ case 'RIGHT_PAREN':

break;
case 'DBLSTRING':
stack.push({
value: `"${token[1]}"`,
type: 'string'
});
break;
case 'NUMBER':

@@ -78,2 +93,10 @@ stack.push({

default:
if (!findParen) {
this.index--;
return {
value: functionName,
type: 'literal',
alias: null
};
}
stack.push({

@@ -321,2 +344,3 @@ value: token[1],

case 'LITERAL':
case 'FUNCTION':
stack.push({

@@ -323,0 +347,0 @@ value: token[1],

2

package.json
{
"name": "sql2json",
"version": "1.2.0",
"version": "1.2.1",
"description": "",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -760,3 +760,29 @@ const assert = require('assert');

});
it('With cast', () => {
const data = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
where: {
type: 'operator',
left: {
value: 'day::int',
type: 'literal'
},
value: '>',
right: {
value: 2,
type: 'number'
}
}
};
const response = 'SELECT * FROM tablename WHERE day::int > 2';
Json2sql.toSQL(data).should.deepEqual(response);
});
});

@@ -763,0 +789,0 @@

@@ -682,17 +682,13 @@ const assert = require('assert');

});
describe('GroupBy', () => {
it('Group by one field', () => {
it('With table', () => {
const response = {
select: [{
value: '*',
value: 'avg',
alias: null,
type: 'wildcard'
type: 'literal'
}],
from: 'tablename',
group: ['name']
from: 'cait_2_0_country_ghg_emissions_onlyco2'
};
const obj = new Sql2json('select * from tablename group by name');
const obj = new Sql2json('SELECT avg FROM cait_2_0_country_ghg_emissions_onlyco2');
const json = obj.toJSON();

@@ -702,199 +698,218 @@ json.should.deepEqual(response);

it('Group by several fields', () => {
const response = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
group: ['name', 'surname']
};
});
const obj = new Sql2json('select * from tablename group by name, surname');
const json = obj.toJSON();
json.should.deepEqual(response);
});
// describe('GroupBy', () => {
// it('Group by one field', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// group: ['name']
// };
it('Group with where', () => {
const response = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
group: ['name', 'surname'],
where: {
type: 'between',
value: 'data',
arguments: [{
value: 1,
type: 'number'
}, {
value: 3,
type: 'number'
}]
}
};
// const obj = new Sql2json('select * from tablename group by name');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
const obj = new Sql2json('select * from tablename where data between 1 and 3 group by name, surname');
const json = obj.toJSON();
json.should.deepEqual(response);
});
});
// it('Group by several fields', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// group: ['name', 'surname']
// };
describe('OrderBy', () => {
it('SQL with orderby', () => {
const response = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
orderBy: [{
value: 'name',
direction: null
}]
};
// const obj = new Sql2json('select * from tablename group by name, surname');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
const obj = new Sql2json('select * from tablename order by name');
const json = obj.toJSON();
json.should.deepEqual(response);
});
// it('Group with where', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// group: ['name', 'surname'],
// where: {
// type: 'between',
// value: 'data',
// arguments: [{
// value: 1,
// type: 'number'
// }, {
// value: 3,
// type: 'number'
// }]
// }
// };
it('SQL with orderby and direction', () => {
const response = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
orderBy: [{
value: 'name',
direction: 'asc'
}]
};
// const obj = new Sql2json('select * from tablename where data between 1 and 3 group by name, surname');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
// });
const obj = new Sql2json('select * from tablename order by name asc');
const json = obj.toJSON();
json.should.deepEqual(response);
});
// describe('OrderBy', () => {
// it('SQL with orderby', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// orderBy: [{
// value: 'name',
// direction: null
// }]
// };
it('SQL with several orderby and direction', () => {
const response = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
orderBy: [{
value: 'name',
direction: 'asc'
}, {
value: 'createdAt',
direction: 'desc'
}]
};
// const obj = new Sql2json('select * from tablename order by name');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
const obj = new Sql2json('select * from tablename order by name asc, createdAt desc');
const json = obj.toJSON();
json.should.deepEqual(response);
});
// it('SQL with orderby and direction', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// orderBy: [{
// value: 'name',
// direction: 'asc'
// }]
// };
it('SQL with several orderby and direction 2', () => {
const response = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
orderBy: [{
value: 'name',
direction: 'asc'
}, {
value: 'createdAt',
direction: null
}]
};
// const obj = new Sql2json('select * from tablename order by name asc');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
const obj = new Sql2json('select * from tablename order by name asc, createdAt');
const json = obj.toJSON();
json.should.deepEqual(response);
});
});
// it('SQL with several orderby and direction', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// orderBy: [{
// value: 'name',
// direction: 'asc'
// }, {
// value: 'createdAt',
// direction: 'desc'
// }]
// };
describe('Limit and offset', () => {
it('Limit', () => {
const response = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
limit: 5
};
// const obj = new Sql2json('select * from tablename order by name asc, createdAt desc');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
const obj = new Sql2json('select * from tablename limit 5');
const json = obj.toJSON();
json.should.deepEqual(response);
});
// it('SQL with several orderby and direction 2', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// orderBy: [{
// value: 'name',
// direction: 'asc'
// }, {
// value: 'createdAt',
// direction: null
// }]
// };
it('Offset', () => {
const response = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
limit: 5,
offset: 10
};
// const obj = new Sql2json('select * from tablename order by name asc, createdAt');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
// });
const obj = new Sql2json('select * from tablename limit 5 offset 10');
const json = obj.toJSON();
json.should.deepEqual(response);
});
});
// describe('Limit and offset', () => {
// it('Limit', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// limit: 5
// };
describe('all', () => {
it('All', () => {
const response = {
select: [{
value: '*',
alias: null,
type: 'wildcard'
}],
from: 'tablename',
group: ['name', 'surname'],
where: {
type: 'between',
value: 'data',
arguments: [{
value: 1,
type: 'number'
}, {
value: 3,
type: 'number'
}]
},
limit: 1,
orderBy: [{
value: 'name',
direction: null
}]
};
// const obj = new Sql2json('select * from tablename limit 5');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
const obj = new Sql2json('select * from tablename where data between 1 and 3 group by name, surname order by name limit 1');
const json = obj.toJSON();
json.should.deepEqual(response);
});
});
// it('Offset', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// limit: 5,
// offset: 10
// };
// const obj = new Sql2json('select * from tablename limit 5 offset 10');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
// });
// describe('all', () => {
// it('All', () => {
// const response = {
// select: [{
// value: '*',
// alias: null,
// type: 'wildcard'
// }],
// from: 'tablename',
// group: ['name', 'surname'],
// where: {
// type: 'between',
// value: 'data',
// arguments: [{
// value: 1,
// type: 'number'
// }, {
// value: 3,
// type: 'number'
// }]
// },
// limit: 1,
// orderBy: [{
// value: 'name',
// direction: null
// }]
// };
// const obj = new Sql2json('select * from tablename where data between 1 and 3 group by name, surname order by name limit 1');
// const json = obj.toJSON();
// json.should.deepEqual(response);
// });
// });
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc