1.0.1 • Published 5 years ago

awful-name-thanks-npm v1.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

Quickstore

Node asynchronous namespaced key-value persistent storage which uses Knex and caches using Redis.

Install

npm i awful-name-thanks-npm

You have to provide a Knex and a Redis instance. Examples:

// your knex instance, e.g.
var knex = require('knex')({
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : '',
    password : '',
    database : ''
  }
})

// your redis instance, e.g.
var redis = require('redis').createClient()

Create a quickstorage instance:

import Quickstorage from 'awful-name-thanks-npm' // or const Quickstore = require('awful-name-thanks-npm').default

var qs = new Quickstorage({
	knex: knex,
	redis: redis,
	mysql: {
		tableName: 'storage',
		keyColumn: 'key',
		valueColumn: 'value'
	}
})

Usage

You can set and retrieve keys on the primary namespace:

qs.set('foo', 'bar')

(Note: the above returns a promise that throws in case of error)

To retrieve the value, simply do:

console.log(await qs.get('foo')) // => "bar"

Or

qs.get('foo').then(val => {
	console.log(val) // => "bar"
})

To delete the value:

qs.del('foo')

You can store values in different namespaces:

let new_namespace = qs.namespace('another_namespace')

// the API is still the same
new_namespace.set('foo', 'bar')

And store any primitive datatype:

await qs.set('myNumber', 123)
typeof (await qs.get('myNumber')) // "number"
await qs.set('myObj', { greeting: 'hey' })
(await qs.get('myObj')).greeeting // "hey"

WTF is wrong with the package name?

For years, NPM mislead users by showing that a package name is available, but at the time of npm publishing the package, it says it is similar to another package (based on rules they keep).

npm ERR! 403 Forbidden - PUT https://registry.npmjs.org/coolname - Package name too similar to existing packages; try renaming your package to '@yourusername/coolname' and publishing with 'npm publish --access=public' instead

Several issues have been created but NPM never went with a solution. Time goes on, and more packages were created and finding a good name for your package is becoming a difficult task.

And nobody likes to waste time.