keyvify
TypeScript icon, indicating that this package has built-in type declarations

0.1.5 • Public • Published

Keyvify

A simple key-value database supporting various dialects

npm version npm downloads

📦 Installation

$ npm install keyvify

and also a Dialect

$ npm i pg pg-hstore # Postgres
$ npm i mysql2 # MySQL
$ npm i mariadb # MariaDB
$ npm i sqlite3 # SQLite
$ npm i better-sqlite3 # Better SQLite
$ npm i mongoose # MongoDB
$ npm i tedious # Microsoft SQL Server

But why Keyvify?

  • Simple as this
  • Easy for beginners
  • Persistent
  • Promise-based
  • Supports multiple databases
  • Support for dot notation
  • Import and Export the data to a simple JSON file
  • Store almost anything (Refer all the types here)
  • Quick setup (When using better-sqlite3 or sqlite)
  • In-built caching using NodeJS Map
  • Support for custom Dialects and Cache store
  • Typescript support
  • Works from NodeJS v8 (might vary)

🤔 How does it work?

  • Keyvify internally uses Better SQLite for SQLite, Sequelize for other SQL related-databases, Mongoose for MongoDB
  • Serializes all the data into string to store in database. Uses sequelize-javascript by default due to limitation in JSON.stringify
  • Keyvify caches the data when something is set, get, delete and fetch

📄 Documentation

Refer here

📙 Guides

Refer here

✏️ Basic Example

const { Keyvify } = require("keyvify");

const database = Keyvify("my_super_awesome_database", {
  dialect: "better-sqlite",
  storage: __dirname + "/../database.sqlite",
});

const init = async () => {
  // connect
  await database.connect();

  // set a data
  await database.set("hello", "world"); // returns: { key: "hello", value: "world" }

  // get a data
  await database.get("hello"); // returns: { key: "hello", value: "world" }

  // get all data (fetches from the database)
  await database.all(); // returns: [{ key: "hello", value: "world" }]

  // get all **cached** data (only data from `database.cache` and doesnt need await)
  database.entries(); // returns: [{ key: "hello", value: "world" }]

  // delete a data
  await database.delete("hello"); // returns: 1

  // delete all
  await database.truncate(); // returns: 0 (number of deleted keys)

  // disconnect
  await database.disconnect();
};

database.on("connect", () => console.log("Connected!"));
database.on("disconnect", () => console.log("Disconnected!"));
database.on("valueSet", (pair) => console.log("Some data was set:", pair));
database.on("valueGet", (pair) => console.log("Some data was got:", pair));
database.on("valueDelete", (key) => console.log("Some key was deleted:", key));
database.on("valueUpdate", (pair) =>
  console.log("Some data was changed:", pair)
);
database.on("valueFetch", (pairs) =>
  console.log("All data were fetched:", pairs)
);
database.on("truncate", (amount) =>
  console.log("Database was emptied:", amount)
);

Click here for more examples

🚩 Resources

Package Sidebar

Install

npm i keyvify

Weekly Downloads

2

Version

0.1.5

License

MIT

Unpacked Size

104 kB

Total Files

27

Last publish

Collaborators

  • zyrouge