Skip to content

aoijs/aoi.db

Repository files navigation

aoi.db

@aoijs/aoi.db

Discord Server NPM Downloads NPM Version

Table Of Contents

About

Aoi.db is a collection of various database types to handle various types of data requirements!

Installation

#npm
npm i @aoijs/aoi.db

#yarn
yarn add @aoijs/aoi.db

Types

  • KeyValue - A simple database that stores key value pairs
    • Usage: general purpose
  • WideColumn - A database that stores data in a column
    • Usage: good for getting separate columns related to a primary column
  • Remote - A database that stores data in a remote server
    • Usage: good for separating database extensive usage from main project/process

Setups

KeyValue

const { KeyValue } = require("@aoijs/aoi.db"); //commonjs
// or
import { KeyValue } from "@aoijs/aoi.db"; //esm

// Basic Setup
const db = new KeyValue({
  dataConfig: { path: "./database" },
  encryptionConfig: {
    encriptData: false,
    securityKey: "a-32-characters-long-string-here",
  },
  debug: true,
});

db.on("ready", () => {
  console.log("Database is ready!");
});

db.connect();

Reference: KeyValue

WideColumn

const { WideColumn, Column } = require("@aoijs/aoi.db"); //commonjs
// or
import { WideColumn, Column } from "@aoijs/aoi.db"; //esm

// Basic Setup

const prime = new Column({
  name: "id",
  primary: true,
  type: "bigint",
  default: 0n,
});
const xp = new Column({
  name: "xp",
  type: "number",
  primary: false,
  sortOrder: "DESC",
  default: 0,
});

const db = new WideColumn({
  path: "./path/",
  encryptionConfig: {
    securityKey: "a-32-characters-long-string-here",
  },
  tables: [
    {
      name: "main",
      columns: [prime, xp],
    },
  ],
});

db.on("ready", () => {
  console.log("Database is ready!");
});

db.connect();

Reference: WideColumn

Remote

Setting up the database server

const { Receiver } = require("@aoijs/aoi.db"); //commonjs
// or
import { Receiver } from "@aoijs/aoi.db"; //esm

const rec = new Receiver({
  logEncrypt: "a-32-characters-long-string-here",
  logPath: "./logPath/",
  wsOptions: {
    port: portNo, // 443 for ssl wss and 80 for ws
    clientTracking: true,
  },
  whitelistedIps: "*",
});

rec.on("connect", () => {
  console.log("connected");
});

rec.connect();

Reference: Receiver

Setting up the client

const { Transmitter, TransmitterFlags } = require("@aoijs/aoi.db"); //commonjs
// or
import { Transmitter, DatabaseEvents } from "@aoijs/aoi.db"; //esm

const db = Transmitter.createConnection({
    path: `aoidb://usersatoshi:123456@localhost:8080`,
    dbOptions: {
        type: "KeyValue",
        options: {
            dataConfig: {
                path: "./database",
            },
            encryptionConfig: {
                securityKey: "a-32-characters-long-string-here"
            }
        }
    }
})

//or 

const db = new Transmitter({
    dbOptions: {
        type: "KeyValue",
        options: {
            dataConfig: {
                path: "database",
            },
            encryptionConfig: {
                securityKey: "a-32-characters-long-string-here"
            }
        }
    },
    username: "username",
    password: "password",
})



db.on(DatabaseEvents.Connect, () => console.log("Connected"));
db.on(DatabaseEvents.Disconnect, () => console.log("Disconnected"));
db.connect();

Reference: Transmitter

Links