A modern, robust, type-safe, and lightweight database wrapper for Node.js.
- 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.
npm install ekmek-db- 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();- Initialize your database with the adapter that fits your project.
import { EkmekDB, JsonAdapter } from 'ekmek-db';
const db = new EkmekDB(new JsonAdapter({ folder: 'data', file: 'database.json' }));import { EkmekDB, YamlAdapter } from 'ekmek-db';
const db = new EkmekDB(new YamlAdapter({ folder: 'data', file: 'database.yaml' }));import { EkmekDB, MongoAdapter } from 'ekmek-db';
const db = new EkmekDB(new MongoAdapter('YOUR_MONGO_URL_HERE'));import { EkmekDB, MemoryAdapter } from 'ekmek-db';
const db = new EkmekDB(new MemoryAdapter());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();await db.set('economy.balance', 1000);
await db.add('economy.balance', 500);
await db.subtract('economy.balance', 200);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');- 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();