NHibernate-style hi/lo ID generator for node.js & SQL Server
npm install node-hiloNHibernate-style hi/lo ID generator for node.js
node-hilo exports a factory function that takes a configuration object:
``javascript`
/*
The configuration argument can contain the following:
{
hilo: {
maxLo: 10 // an integer value for maxLo
},
// sql is a config object that seriate would understand
sql: {
user: "you_me_anyone",
password: "superseekret",
server: "some.server.com",
database: "meh_databass"
}
}
*/
var hilo = require( "node-hilo" )( configuration );
node-hilo exports three module members: a nextId method, a nextIds method and a read-only property called hival. You will likely never need to care about the hival value - it's there for diagnostics and testing. The nextId method returns a promise, with the newly generated ID being passed to the success callback:
`javascript
const id = await hilo.nextId();
// block of 100 ids
const ids = await hilo.nextIds( 100 )
`
values). You will need to ensure your DB server converts/casts them to long (which SQL will normally implicitly do for you).If you'd like to learn more about the hi/lo algorithm:
* Look at the NHibernate Source
* ID Generators
* The Hi/Lo Algorithm
* Jon Skeet's answer on SO
Tests, etc
If you plan to run the integration tests, you will need access to an MS SQL server. Create a test database that can be used (the integration tests create two tables), and save a configuration file called
intTestDbCfg.json under the spec/integration folder. Your configuration file will look similar to this:`javascript
{
"sql": {
"user": "dbuser",
"password": "dbuserpwd",
"server": "localhost",
"database": "nhutil"
},
"hilo": {
"maxLo": 100
},
"test" : {
"recordsToCreate" : 15000,
"startingHiVal" : "314159265"
}
}
``