usemidb
v0.1.5
Published
Basit, güvenli ve TTL destekli JSON tabanlı Node.js veritabanı
Maintainers
Readme
UsemiDB 🚀
UsemiDB, Node.js projeleri için hafif, yüksek performanslı ve JSON tabanlı bir key-value database sistemidir.
v0.1.4 Güncellemesi ile artık Nokta Notasyonu (Dot Notation) destekliyor! 🎯 İç içe geçmiş verileri (Nested Objects) yönetmek, matematiksel işlemler yapmak, yedek almak ve gelişmiş aramalar yapmak hiç bu kadar kolay olmamıştı.
⚡ Özellikler
- 🎯 Dot Notation:
user.settings.themegibi iç içe verilere doğrudan erişim ve güncelleme. - 🛡️ Snapshot & Restore: İstediğiniz an veritabanının yedeğini alın (
backup) ve geri dönün (restore). - 🔎 Gelişmiş Arama:
findvefindOneile obje özelliklerine göre hızlıca veri bulun. - ✖️➗ Matematik Seti:
add,subtract,multiply,divideişlemlerini nokta notasyonu ile yapın. - ✨ Akıllı Listeler:
pushUniqueile tekrarsız ekleme vepullile listeden silme. - 🎲 Random: Veritabanından rastgele veri çekme.
- ⚡ Performans:
writeDelay(Debounce) sistemi ile diski yormadan toplu yazma. - ⏳ TTL Desteği: Verilere ömür biçin, süresi dolunca otomatik silinsin.
- 📁 Collections: Verilerinizi namespace (koleksiyon) bazlı gruplandırın.
🔹 Kullanım Örnekleri
- Kurulum & Ayarlar
const UsemiDB = require("usemidb");
const db = new UsemiDB({
filePath: "./database/data.json", // Veri dosyası
backupPath: "./database/backups", // Yedek klasörü
writeDelay: 100, // Performans için yazma gecikmesi (ms)
autoCleanInterval: 60000 // TTL kontrol aralığı (ms)
});- 🎯 Dot Notation (Nokta Notasyonu) - YENİ!
// İç içe veri kaydetme
await db.set("user_1.settings.theme", "dark");
await db.set("user_1.settings.notifications", true);
// Veriyi okuma
const theme = db.get("user_1.settings.theme");
console.log(theme); // "dark"
// Tüm objeyi de çekebilirsiniz
console.log(db.get("user_1"));
// { settings: { theme: "dark", notifications: true } }- ✖️ Matematiksel İşlemler
await db.set("user_1.stats.xp", 100);
// Ekleme & Çıkarma
await db.add("user_1.stats.xp", 50); // 150
await db.subtract("user_1.stats.xp", 10); // 140
// Çarpma & Bölme
await db.multiply("user_1.stats.xp", 2); // 280
await db.divide("user_1.stats.xp", 2); // 140- ✨ Akıllı Liste (Array) Yönetimi
// Normal Ekleme
await db.push("etiketler", "nodejs");
// ⭐️ Unique Push (Tekrarsız Ekleme)
// Eğer "nodejs" listede varsa tekrar eklemez!
await db.pushUnique("etiketler", "nodejs");
// İç içe listelere erişim
await db.push("user_1.inventory", "sword");
// Listeden Silme (Pull)
await db.pull("user_1.inventory", "sword");- 🛡️ Yedekleme & Geri Yükleme (Snapshot)
// Kritik bir işlemden önce yedek al
await db.backup("guvenli-nokta-v1");
console.log("Yedek alındı!");
// ...Veriler bozulursa veya silinirse...
// Yedeği geri yükle
await db.restore("guvenli-nokta-v1");
console.log("Veriler kurtarıldı.");- 🔎 Arama & Rastgele Veri
// Obje özelliklerine göre arama
const admins = db.find({ role: "admin" });
// İsme göre tek kişi bul
const user = db.findOne({ username: "Lorely" });
// Rastgele veri çek (Çekilişler için)
const winner = await db.random();- 🗂️ Koleksiyonlar (Namespaces)
const economy = db.collection("economy");
// Sadece 'economy' koleksiyonuna yazar
await economy.set("user_1", 500);
// Koleksiyon içinde de nokta notasyonu çalışır
await economy.add("user_1", 50);📡 Event Sistemi
db.on("set", (key, value) => {
console.log(`[KAYIT] ${key} = ${JSON.stringify(value)}`);
});
db.on("expired", (key) => {
console.log(`[TTL] ${key} süresi doldu ve silindi.`);
});💻 Kurulum
npm install usemidb