Coder Social home page Coder Social logo

node-hilo's Introduction

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 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" )( configuration );

How to Use

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:

const id = await hilo.nextId();

// block of 100 ids
const ids = await hilo.nextIds( 100 )

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"
	}
}

node-hilo's People

Contributors

arobson avatar danhounshell avatar digitalbush avatar ifandelse avatar johndmathis avatar prestaul avatar rniemeyer avatar slacroix avatar xlyds avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node-hilo's Issues

Should follow our existing conventions for Node projects

Our Node projects use several conventions: biggulp, a standard Gulpfile and a specific directory structure and set of standard files for consistency. Create a PR for this project that will bring it in-line with our conventions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.