- new simple API
- fast, lightweight node module
- shortcut for queries
- caching queries
- customizable queries
- well tested with Chai
- Typescript support
npm install query-manager
Run tests typing in terminal:
npm run test
or run code coverage typing:
npm run coverage
Put query identifier between @ signs.
- Example 'file1.sql'
--@users.getAll@
SELECT * FROM users;
-- @ users.getAllActive @
SELECT *
FROM users
WHERE active = 1
;
-- @users.getBanned @
-- Some other comment here
-- another comment
SELECT *
FROM users
WHERE banned = 1
;
/* This is very important comment here! */
/* @ users.getLastLogin @ */
SELECT last_login
FROM users
WHERE user_id = 234
;
/*
This query returns user profile.
@users.getUserProfile@
*/
SELECT *
FROM profiles
WHERE id = {user_id}
;
/*
-- @ users.getFields @
*/
SELECT {field1}, {field2}
FROM users
WHERE email='{email_value}'
;
- Go to /example directory. There is example.js script that shows usage of query-manager module.
- Install dependencies with
npm install
- Then run script with node
node example.js
var { QueryManager } = require('./../index.js');
var readFile = require('read-file');
var sqlTemplates = [
'./file1.sql',
'./file2.sql'
].map(function (filePath) {
return readFile.sync(filePath, { encoding: 'utf8' });
});
var qm = new QueryManager(sqlTemplates);
console.log(qm.get('users.getAll')); // SELECT * FROM users;
console.log(qm.get('users.getLastLogin')); // SELECT last_login FROM users WHERE user_id = 234;
var userProfileOptions = {
user_id: 345
};
console.log(qm.get('users.getUserProfile', userProfileOptions)); // SELECT * FROM profiles WHERE id = 345;
var userFieldsOptions = {
field1: 'username',
field2: 'email',
email_value: '[email protected]'
};
console.log(qm.get('users.getFields', userFieldsOptions)); // SELECT username, email FROM users WHERE email='[email protected]';
MIT