univi.db
v1.0.1
Published
Hafif, dosya tabanlı JSON veritabanı. Dot notation, TTL, event emitter, otomatik yedekleme ve daha fazlasını destekler. Tüm metodlar hem **Türkçe** hem **İngilizce** kullanılabilir.
Readme
🗄 univi.db — JSON Veritabanı Modülü
Hafif, dosya tabanlı JSON veritabanı. Dot notation, TTL, event emitter, otomatik yedekleme ve daha fazlasını destekler. Tüm metodlar hem Türkçe hem İngilizce kullanılabilir.
📦 Kurulum
Herhangi bir bağımlılık gerektirmez. Dosyayı projenize kopyalayın ve import edin.
const DB = require("univi.db");
const db = new DB();⚙️ Ayarlar
const db = new DB("database.json", {
debug: false, // Konsola işlem logları yazar
autoBackupInterval: 0, // Her N yazma işleminde otomatik yedek (0 = kapalı)
backupDir: "./backups" // Otomatik yedeklerin kaydedileceği dizin
});| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
| file | string | database.json | Veritabanı dosya yolu |
| debug | boolean | false | Debug modu |
| autoBackupInterval | number | 0 | Her N yazmada otomatik yedek |
| backupDir | string | ./backups | Yedek dizini |
📖 Metodlar
set / yaz
Veri yazar. Dot notation ve TTL destekler.
db.set("prefix", "!");
db.yaz("prefix", "!");
// Dot notation
db.set("user.name", "Ali");
db.set("user.age", 25);
// TTL — 1 saat sonra otomatik silinir
db.set("token", "abc123", { ttl: 3600 });get / fetch / bul
Veri okur. TTL süresi dolmuşsa null döner.
db.get("prefix"); // "!"
db.fetch("user.name"); // "Ali"
db.bul("user.age"); // 25has / kontrol
Anahtarın var olup olmadığını kontrol eder.
db.has("prefix"); // true / false
db.kontrol("prefix"); // true / falsedelete / remove / sil
Veriyi siler.
db.delete("prefix");
db.remove("prefix");
db.sil("prefix");
// Dot notation
db.delete("user.age");update / güncelle
Mevcut objeyi merge eder, üzerine yazmaz.
db.set("user", { name: "Ali", age: 25 });
db.update("user", { age: 26, city: "İstanbul" });
// Sonuç: { name: "Ali", age: 26, city: "İstanbul" }
db.güncelle("user", { age: 27 });push / depola
Array'e değer ekler. Array yoksa oluşturur.
db.push("renkler", "kırmızı");
db.push("renkler", "mavi");
db.depola("renkler", "yeşil");
// Sonuç: ["kırmızı", "mavi", "yeşil"]pull / pushsil
Array'den indeks veya değer ile siler.
// Değer ile sil
db.pull("renkler", "mavi");
// İndeks ile sil (0'dan başlar)
db.pull("renkler", 0);
db.pushsil("renkler", "yeşil");add / topla / ekle / increment
Sayısal değere ekler.
db.add("puan", 10);
db.topla("puan", 5);
db.ekle("puan", 1);
db.increment("puan"); // +1
db.increment("puan", 3); // +3subtract / çıkar / decrement
Sayısal değerden çıkarır.
db.subtract("puan", 5);
db.çıkar("puan", 3);
db.decrement("puan"); // -1
db.decrement("puan", 2); // -2find / bul_arr
Array içinde callback ile ilk eşleşeni döner.
db.set("users", [
{ name: "Ali", age: 20 },
{ name: "Veli", age: 30 }
]);
db.find("users", u => u.age > 25);
// { name: "Veli", age: 30 }
db.bul_arr("users", u => u.name === "Ali");
// { name: "Ali", age: 20 }filter / filtrele
Array içinde callback ile eşleşenlerin tümünü döner.
db.filter("users", u => u.age >= 20);
// [{ name: "Ali", age: 20 }, { name: "Veli", age: 30 }]
db.filtrele("users", u => u.age > 25);
// [{ name: "Veli", age: 30 }]all / fetchAll / hepsi
Tüm veriyi döner. Süresi dolmuş TTL kayıtları dahil edilmez.
db.all();
db.fetchAll();
db.hepsi();
// { prefix: "!", user: { name: "Ali", age: 26 }, ... }keys / anahtarlar
Tüm anahtarları döner.
db.keys(); // ["prefix", "user", "puan"]
db.anahtarlar();values / değerler
Tüm değerleri döner.
db.values(); // ["!", { name: "Ali" }, 42]
db.değerler();count / adet
Toplam anahtar sayısını döner.
db.count(); // 3
db.adet();clear / sıfırla
Veritabanını tamamen temizler.
db.clear();
db.sıfırla();backup / yedekle
Manuel yedek alır. Dosya adı verilmezse timestamp kullanılır.
db.backup(); // backup_1716000000000.json
db.backup("yedek_v1"); // yedek_v1.json
db.yedekle("yedek_v1");restore / geriYükle
Bir yedek dosyasından veriyi geri yükler.
db.restore("yedek_v1");
db.geriYükle("yedek_v1");stats / istatistik
Veritabanı hakkında bilgi döner.
db.stats();
db.istatistik();
/*
{
file: "./database.json",
keyCount: 5,
fileSizeBytes: 1024,
fileSizeKB: 1.00,
lastModified: 2026-05-17T...,
writeCount: 42,
isLocked: false,
queueLength: 0
}
*/lock / kilitle — unlock / kilidiAç
Yazma işlemlerini kilitler. Kilit açılınca kuyruktaki yazmalar uygulanır.
db.lock();
db.kilitle();
// ... bu sürede yapılan set/delete işlemleri kuyruğa alınır
db.unlock();
db.kilidiAç();destroy / yokEt
TTL zamanlayıcısını durdurur. Process çıkışından önce çağrılması önerilir.
db.destroy();
db.yokEt();
// Örnek kullanım:
process.on("exit", () => db.destroy());⚡ Events
DB sınıfı EventEmitter'dan türer. Tüm işlemleri dinleyebilirsiniz.
db.on("set", ({ key, value }) => console.log("Yazıldı:", key, value));
db.on("delete", ({ key }) => console.log("Silindi:", key));
db.on("push", ({ key, value }) => console.log("Push:", key, value));
db.on("pull", ({ key, indexOrValue })=> console.log("Pull:", key, indexOrValue));
db.on("add", ({ key, amount, result }) => console.log("Eklendi:", key, result));
db.on("subtract", ({ key, amount, result }) => console.log("Çıkarıldı:", key, result));
db.on("clear", () => console.log("DB temizlendi"));
db.on("backup", ({ file }) => console.log("Yedek:", file));
db.on("restore", ({ file }) => console.log("Geri yüklendi:", file));
db.on("autoBackup",({ file }) => console.log("Otomatik yedek:", file));
db.on("expired", ({ key }) => console.log("TTL sona erdi:", key));
db.on("write", ({ count }) => console.log("Yazma #", count));
db.on("lock", () => console.log("DB kilitlendi"));
db.on("unlock", () => console.log("DB kilidi açıldı"));
db.on("destroy", () => console.log("DB durduruldu"));📋 Tüm Metodlar — Hızlı Referans
| İngilizce | Türkçe | Açıklama |
|---|---|---|
| set(key, val, opts?) | yaz | Veri yazar |
| get(key) | bul, fetch | Veri okur |
| has(key) | kontrol | Varlık kontrolü |
| delete(key) | sil, remove | Veri siler |
| update(key, obj) | güncelle | Obje merge eder |
| push(key, val) | depola | Array'e ekler |
| pull(key, val) | pushsil | Array'den çıkarır |
| add(key, n) | topla, ekle, increment | Sayıya ekler |
| subtract(key, n) | çıkar, decrement | Sayıdan çıkarır |
| find(key, fn) | bul_arr | Array'de arar |
| filter(key, fn) | filtrele | Array'i filtreler |
| all() | hepsi, fetchAll | Tüm veri |
| keys() | anahtarlar | Tüm anahtarlar |
| values() | değerler | Tüm değerler |
| count() | adet | Anahtar sayısı |
| clear() | sıfırla | DB'yi temizler |
| backup(name?) | yedekle | Yedek alır |
| restore(name) | geriYükle | Yedekten geri yükler |
| stats() | istatistik | DB bilgisi |
| lock() | kilitle | Yazmayı kilitler |
| unlock() | kilidiAç | Kilidi açar |
| destroy() | yokEt | Zamanlayıcıyı durdurur |
🔖 Lisans
MIT
