vizier.db
v0.1.0
Published
Tablo desteği ve olay sistemi içeren hafif JSON dosya tabanlı veritabanı.
Maintainers
Readme
Vizier.DB
Basit ama esnek bir JSON dosya tabanlı database. Hem "fast" key-value işlemleri hem de tablo (table) yapısı sağlar. Event sistemiyle tablo ve veri değişikliklerini dinleyebilirsiniz.
Kurulum
npm install vizier.db
# veya lokal geliştirme için
npm installBaşlangıç
const { VizierDB, Table } = require('vizier.db');
// Dosya yolu vermek opsiyoneldir, verilmezse proje kökünde vizier.db.json oluşturur
const db = new VizierDB({
filePath: './data/vizier.db.json',
autoSave: true, // her değişiklikte otomatik kaydet
});Fast (key–value) API
// set
db.set('username', 'furkan');
// get
const name = db.get('username');
// push (array)
db.push('logs', { message: 'ilk log' });
// unpush (array içinden ilk eşleşen elemanı siler)
db.unpush('logs', { message: 'ilk log' }); // Dikkat: referans eşleşmesi gerekir
// delete (key sil)
db.delete('username');
// all (tüm üst seviye key-value veriyi getirir)
const allFastData = db.all();Table Sistemi
Tablo Oluşturma & Listeleme
// tablo oluşturma
db.createTable('users');
// tablo isimlerini listeleme
const tables = db.listTables();
// tabloyu düşürme (silme)
db.dropTable('users');
// tabloyu yeniden adlandırma
db.renameTable('oldName', 'newName');Table Sarmalayıcı (Table class)
const users = new Table(db, 'users');
// insert
users.insert({ id: 1, name: 'Alice', age: 25 });
users.insert({ id: 2, name: 'Bob', age: 30 });
// fetch (tüm satırlar)
const allUsers = users.all();
// fetch (query object)
const age25 = users.fetch({ age: 25 });
// fetch (custom predicate)
const adults = users.fetch(user => user.age >= 18);
// update (object merge)
users.update({ id: 1 }, { age: 26 });
// update (custom function)
users.update({ id: 2 }, row => ({ ...row, name: 'Bobby' }));
// remove
users.remove({ id: 2 });
// veya predicate
users.remove(user => user.age > 40);Event Sistemi
VizierDB bir EventEmitterdır. Aşağıdaki event’ler mevcut:
ready– database yüklendiğindesave– dosya kaydedildiğindeerror– bir hata oluştuğundaset– fast key-value setdelete– fast key-value deletepush– fast array pushunpush– fast array unpushtable:create– tablo oluşturulduğundatable:drop– tablo silindiğindetable:rename– tablo yeniden adlandırıldığındatable:insert– tabloya satır eklendiğindetable:update– tabloda satır güncellendiğindetable:remove– tablodan satır silindiğinde
Event Örneği
const db = new VizierDB({ filePath: './data/vizier.db.json' });
// fast events
db.on('set', ({ key, value }) => {
console.log('[event] set', key, value);
});
// table events
db.on('table:insert', ({ table, row }) => {
console.log(`[event] insert into ${table}`, row);
});Örnek Çalıştırma
Repo içinde basit bir örnek bulunuyor:
node ./examples/basic.jsBu komut ./data/vizier.db.json dosyasını oluşturur ve birkaç fast + table işlemi yapar.
Notlar
- JSON dosyası küçük ve orta boy projeler için uygundur. Yüksek eşzamanlı yazma olan büyük projelerde klasik veritabanları tercih edilmelidir.
autoSave: falseayarlanıp, manuel olarakdb._save()(public olmayan) yerine gelecekte eklenecek birdb.commit()tarzı API kullanılabilir. Şu an için her değişiklikte otomatik kaydetme tavsiye edilir.
