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

node-hilo

Package Overview
Dependencies
Maintainers
5
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-hilo

NHibernate-style hi/lo ID generator for node.js & SQL Server

  • 1.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
23
increased by2200%
Maintainers
5
Weekly downloads
 
Created
Source

node-hilo

NHibernate-style hi/lo ID generator for node.js

How to Use It

Requiring & Configuring

node-hilo exports a factory function that takes an instance of seriate, and a configuration object:

/*
	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" )( seriate, configuration );

How to Use

node-hilo exports two module members: a nextId 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:

hilo.nextId(
	function( id ){
		// Now you can use the id on your object, etc.
		api.saveNewThing( id, newThing );
	},
	function( err) {
		console.log( "O NOES!", err );
	}
);

The More You Know...

JavaScript doesn't natively support 64 bit integers - we're using a helper lib (big-integer) to allow us to properly represent them. Because of this, the generated IDs are passed back as strings (even though they're long 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:

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:

{
	"sql": {
		"user": "dbuser",
		"password": "dbuserpwd",
		"server": "localhost",
		"database": "nhutil"
	},
	"hilo": {
		"maxLo": 100
	},
	"test" : {
		"recordsToCreate" : 15000,
		"startingHiVal" : "314159265"
	}
}

I recommend copying the following into a local file by that name and updating the sql information, leaving the rest alone.

  • gulp to run all tests and format/lint the code
  • gulp test-behavior to run only behavior tests
  • gulp test-int to run only integration tests
  • gulp coverage to run tests with instanbul report in the console
  • gulp show-coverage to run tests and show the web istanbul report
  • gulp format to run JSCS formatting rules
  • gulp jshint to lint the code

Keywords

FAQs

Package last updated on 19 Feb 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

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