Skip to content

This-null/ekmek-db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍞 ekmek-db

npm bundle size npm unpacked size npm npm version Discord License

A modern, robust, type-safe, and lightweight database wrapper for Node.js.

Features

  • Type-Safe: Built with TypeScript for full autocompletion and type safety.
  • Multiple Adapters: Seamlessly switch between JSON, YAML, MongoDB, and Memory.
  • Advanced Array Methods: Easily manipulate array data with index-based priority controls.
  • Dot Notation: Easily access deep object properties directly.
  • Data Migration: Transfer your data across different adapters smoothly.

Installation

npm install ekmek-db

MysqlAdapter

  • Perfect for web applications and production environments where you need a centralized SQL database.
import { EkmekDB, MysqlAdapter } from 'ekmek-db';

const db = new EkmekDB(new MysqlAdapter({
  host: 'localhost',
  user: 'root',
  password: 'your_password',
  database: 'your_database',
  // Optional: all other mysql2 pool options are supported
}, 'table_name')); // Optional: Default table name is 'ekmek_db'

async function setup() {
  await db.set('server.status', 'online');
  
  const status = await db.get('server.status');
  console.log(`Server is ${status}`);
}

setup();

Adapters Setup

  • Initialize your database with the adapter that fits your project.

JsonAdapter

import { EkmekDB, JsonAdapter } from 'ekmek-db';

const db = new EkmekDB(new JsonAdapter({ folder: 'data', file: 'database.json' }));

YamlAdapter

import { EkmekDB, YamlAdapter } from 'ekmek-db';

const db = new EkmekDB(new YamlAdapter({ folder: 'data', file: 'database.yaml' }));

MongoAdapter

import { EkmekDB, MongoAdapter } from 'ekmek-db';

const db = new EkmekDB(new MongoAdapter('YOUR_MONGO_URL_HERE'));

MemoryAdapter

import { EkmekDB, MemoryAdapter } from 'ekmek-db';

const db = new EkmekDB(new MemoryAdapter());

Basic Operations

await db.set('user.name', 'Admin');
await db.set('user.stats.level', 42);

await db.get('user.name');
await db.get('user.stats');

await db.has('user.stats.level');

await db.all();

await db.delete('user.name');
await db.clear();

Math Operations

await db.set('economy.balance', 1000);

await db.add('economy.balance', 500);

await db.subtract('economy.balance', 200);

Advanced Array Operations

await db.push('guild.members', { id: '123', role: 'User' });
await db.push('guild.members', { id: '456', role: 'Moderator' });

await db.pull('guild.members', (member) => member.id === '123');
await db.unpush('guild.members', { id: '456', role: 'Moderator' });

await db.setByPriority('guild.members', { id: '789', role: 'Owner' }, 1);

await db.delByPriority('guild.members', 1);

await db.find('guild.members', (member) => member.role === 'Owner');
await db.filter('guild.members', (member) => member.role !== 'Banned');

Migration System

  • Transfer your entire dataset from one adapter to another effortlessly.
import { JsonAdapter, MongoAdapter, Migrator } from 'ekmek-db';

async function runMigration() {
  const jsonAdapter = new JsonAdapter({ folder: 'data', file: 'old.json' });
  const mongoAdapter = new MongoAdapter('YOUR_MONGO_URL_HERE');

  await Migrator.transfer(jsonAdapter, mongoAdapter);
}

runMigration();

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors