Skip to content

devRaikou/datara

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🗄️ Datara

Modern, kullanıcı dostu ve güvenilir bir JSON veritabanı modülü.

License: MIT Node.js

✨ Özellikler

  • 🚀 Basit ve Kullanıcı Dostu: Minimalist API ile hızlı başlangıç
  • 💾 Otomatik Kaydetme: Varsayılan olarak her işlemde otomatik kayıt
  • 🔗 Nokta Notasyonu: İç içe nesneler için kolay erişim (user.settings.theme)
  • 📦 Array Desteği: push, filter, find, map gibi array metodları
  • 🔢 Increment/Decrement: Sayısal değerler için kolay artırma/azaltma
  • 📝 TypeScript Desteği: Tam TypeScript tanımlamaları dahil
  • 🎯 Sıfır Bağımlılık: Harici bağımlılık gerektirmez
  • Hafif: Minimal dosya boyutu
  • 🔒 Güvenli: Hata yönetimi ve veri doğrulama

📦 Kurulum

npm install datara

veya

yarn add datara

🚀 Hızlı Başlangıç

const Datara = require('datara');

// Veritabanı oluştur
const db = new Datara('./mydb.json');

// Veri kaydet
db.set('name', 'Datara');
db.set('version', '1.0.0');

// Veri oku
console.log(db.get('name')); // 'Datara'

// İç içe nesneler
db.set('user.name', 'devraikou');
db.set('user.age', 25);
console.log(db.get('user')); // { name: 'devraikou', age: 25 }

📖 Dokümantasyon

Başlatma

const Datara = require('datara');

// Temel kullanım
const db = new Datara('./database.json');

// Opsiyonlarla birlikte
const db = new Datara('./database.json', {
  autoSave: true,     // Her işlemde otomatik kaydet (varsayılan: true)
  pretty: true,       // JSON'u güzel formatla (varsayılan: true)
  indentSize: 2       // Girinti boyutu (varsayılan: 2)
});

Temel İşlemler

set(key, value)

Veritabanına veri kaydetir.

db.set('username', 'devraikou');
db.set('score', 100);
db.set('isActive', true);

// İç içe nesneler için nokta notasyonu
db.set('user.profile.name', 'Ali');
db.set('settings.theme.color', 'dark');

get(key, defaultValue)

Veritabanından veri okur.

const username = db.get('username'); // 'devraikou'
const score = db.get('score'); // 100

// Varsayılan değer
const lang = db.get('language', 'tr'); // 'tr' (eğer yoksa)

// Tüm veriyi al
const allData = db.get(); // Tüm veritabanı

has(key)

Anahtarın var olup olmadığını kontrol eder.

db.has('username'); // true
db.has('nonexistent'); // false

delete(key)

Anahtarı siler.

db.delete('username'); // true
db.delete('nonexistent'); // false

Array İşlemleri

push(key, value)

Array'e eleman ekler.

db.set('todos', []);
db.push('todos', { id: 1, text: 'Görev 1', done: false });
db.push('todos', { id: 2, text: 'Görev 2', done: true });

filter(key, callback)

Array elemanlarını filtreler.

const incompleteTodos = db.filter('todos', todo => !todo.done);

find(key, callback)

Array'de eleman arar.

const todo = db.find('todos', t => t.id === 1);

map(key, callback)

Array elemanlarını dönüştürür.

const todoTexts = db.map('todos', todo => todo.text);

Sayısal İşlemler

increment(key, amount)

Sayısal değeri artırır.

db.set('views', 0);
db.increment('views');      // 1
db.increment('views', 5);   // 6

decrement(key, amount)

Sayısal değeri azaltır.

db.decrement('views');      // 5
db.decrement('views', 3);   // 2

Veritabanı Yönetimi

keys(prefix)

Tüm anahtarları döndürür.

const allKeys = db.keys();
const userKeys = db.keys('user'); // 'user' ile başlayanlar

values()

Tüm değerleri döndürür.

const allValues = db.values();

size()

Üst seviye anahtar sayısını döndürür.

const keyCount = db.size();

clear()

Tüm veritabanını temizler.

db.clear();

save()

Veritabanını manuel olarak kaydeder (autoSave: false ise).

db.save();

reload()

Veritabanını dosyadan yeniden yükler.

db.reload();

İçe/Dışa Aktarma

export()

Tüm veritabanını JSON olarak döndürür.

const data = db.export();
console.log(data);

import(data, merge)

Veriyi veritabanına aktarır.

// Mevcut veriyi değiştir
db.import({ name: 'Yeni Veri' });

// Mevcut veriyle birleştir
db.import({ extra: 'value' }, true);

💡 Kullanım Örnekleri

Kullanıcı Yönetimi

const db = new Datara('./users.json');

// Kullanıcı ekleme
db.set('users', []);
db.push('users', {
  id: 1,
  username: 'devraikou',
  email: 'dev@example.com',
  role: 'admin'
});

// Kullanıcı bulma
const user = db.find('users', u => u.username === 'devraikou');

// Admin kullanıcıları filtreleme
const admins = db.filter('users', u => u.role === 'admin');

Sayaç Sistemi

const db = new Datara('./stats.json');

// Görüntülenme sayacı
db.set('pageViews', 0);
db.increment('pageViews'); // Her ziyarette

// İndirme sayacı
db.set('downloads', 0);
db.increment('downloads', 1); // Her indirmede

Yapılandırma Yönetimi

const db = new Datara('./config.json');

// Varsayılan ayarlar
db.set('app.name', 'My App');
db.set('app.version', '1.0.0');
db.set('settings.theme', 'light');
db.set('settings.language', 'tr');
db.set('settings.notifications.email', true);
db.set('settings.notifications.push', false);

// Ayarları okuma
const theme = db.get('settings.theme');
const emailNotif = db.get('settings.notifications.email');

Önbellek (Cache) Sistemi

const db = new Datara('./cache.json');

// Veri önbellekleme
function getCachedData(key) {
  if (db.has(key)) {
    return db.get(key);
  }
  
  const data = fetchDataFromAPI(key);
  db.set(key, data);
  return data;
}

// Önbelleği temizleme
function clearCache() {
  db.clear();
}

To-Do List Uygulaması

const db = new Datara('./todos.json');

// Görev ekleme
function addTodo(text) {
  const todos = db.get('todos', []);
  const newTodo = {
    id: Date.now(),
    text: text,
    completed: false,
    createdAt: new Date().toISOString()
  };
  db.push('todos', newTodo);
  return newTodo;
}

// Görev tamamlama
function completeTodo(id) {
  const todos = db.get('todos', []);
  const updated = todos.map(todo => 
    todo.id === id ? { ...todo, completed: true } : todo
  );
  db.set('todos', updated);
}

// Tamamlanmamış görevler
function getIncompleteTodos() {
  return db.filter('todos', todo => !todo.completed);
}

🔧 API Referansı

Metod Parametreler Dönüş Açıklama
set(key, value) key: string, value: any any Veri kaydet
get(key, default) key?: string, default?: any any Veri oku
has(key) key: string boolean Anahtar kontrolü
delete(key) key: string boolean Veri sil
push(key, value) key: string, value: any number Array'e ekle
filter(key, callback) key: string, callback: function array Array filtrele
find(key, callback) key: string, callback: function any Array'de bul
map(key, callback) key: string, callback: function array Array dönüştür
increment(key, amount) key: string, amount?: number number Sayı artır
decrement(key, amount) key: string, amount?: number number Sayı azalt
keys(prefix) prefix?: string string[] Anahtarları listele
values() - any[] Değerleri listele
size() - number Anahtar sayısı
clear() - boolean Veritabanını temizle
save() - boolean Manuel kaydet
reload() - boolean Yeniden yükle
export() - object Dışa aktar
import(data, merge) data: object, merge?: boolean boolean İçe aktar

🧪 Test

npm test

📄 Lisans

MIT License - Copyright (c) 2025 devraikou

🤝 Katkıda Bulunma

Katkılarınızı bekliyoruz! Pull request göndermekten çekinmeyin.

  1. Bu repo'yu fork edin
  2. Feature branch oluşturun (git checkout -b feature/amazing-feature)
  3. Değişikliklerinizi commit edin (git commit -m 'feat: Add amazing feature')
  4. Branch'inizi push edin (git push origin feature/amazing-feature)
  5. Pull Request açın

📞 İletişim

Sorularınız için issue açabilirsiniz.

🙏 Teşekkürler

Datara'yı kullandığınız için teşekkür ederiz! ⭐ vermeyi unutmayın.


Made with ❤️ by devraikou

About

Modern, kullanıcı dostu ve güvenilir bir JSON veritabanı modülü.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published