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

    Install

    npm i keyvify

    DownloadsWeekly Downloads

    2

    Version

    0.1.5

    License

    MIT

    Unpacked Size

    104 kB

    Total Files

    27

    Last publish

    Collaborators

    • zyrouge