keyvify
v0.1.5
Published
A simple key-value database supporting various dialects
Downloads
18
Maintainers
Readme
📦 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 inJSON.stringify
- Keyvify caches the data when something is
set
,get
,delete
andfetch
📄 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