@onurege3467/zerohelper
Version:
ZeroHelper is a versatile JavaScript library offering helper functions, validation, logging, database utilities and migration system for developers. It supports MongoDB, MySQL, SQLite, Redis, and PostgreSQL with increment/decrement operations.
92 lines (81 loc) • 4.27 kB
JavaScript
/**
* Tüm veritabanı adaptörlerinin uyması gereken ortak arayüzü tanımlar.
* @interface
*/
class IDatabase {
/**
* Belirtilen koşullara göre birden çok kayıt seçer.
* @param {string} table - Verinin seçileceği tablo veya koleksiyonun adı.
* @param {object} [where] - (Opsiyonel) Kayıtları filtrelemek için kullanılacak koşul nesnesi.
* @returns {Promise<Array<object>>} Koşullara uyan kayıtların bir dizisini içeren bir Promise.
*/
select(table, where) {}
/**
* Belirtilen koşullara göre tek bir kayıt seçer.
* @param {string} table - Verinin seçileceği tablo veya koleksiyonun adı.
* @param {object} [where] - (Opsiyonel) Kaydı filtrelemek için kullanılacak koşul nesnesi.
* @returns {Promise<object|null>} Koşula uyan ilk kaydı veya bulunamazsa `null` içeren bir Promise.
*/
selectOne(table, where) {}
/**
* Yeni bir kayıt ekler.
* @param {string} table - Verinin ekleneceği tablo veya koleksiyonun adı.
* @param {object} data - Eklenecek veriyi içeren nesne.
* @returns {Promise<number|string|object>} Eklenen yeni kaydın ID'sini içeren bir Promise.
*/
insert(table, data) {}
/**
* Belirtilen koşullara uyan kayıtları günceller.
* @param {string} table - Verinin güncelleneceği tablo veya koleksiyonun adı.
* @param {object} data - Güncellenecek yeni verileri içeren nesne.
* @param {object} where - Hangi kayıtların güncelleneceğini belirleyen koşul nesnesi.
* @returns {Promise<number>} Etkilenen (güncellenen) kayıt sayısını içeren bir Promise.
*/
update(table, data, where) {}
/**
* Bir kaydı günceller veya yoksa yeni bir kayıt olarak ekler (Upsert).
* @param {string} table - İşlem yapılacak tablo veya koleksiyonun adı.
* @param {object} data - Ayarlanacak veya güncellenecek veriyi içeren nesne.
* @param {object} where - Kaydın varlığını kontrol etmek ve güncellemek için kullanılacak koşul nesnesi.
* @returns {Promise<any>} Ekleme durumunda yeni ID'yi, güncelleme durumunda etkilenen satır sayısını içeren bir Promise.
*/
set(table, data, where) {}
/**
* Belirtilen koşullara uyan kayıtları siler.
* @param {string} table - Verinin silineceği tablo veya koleksiyonun adı.
* @param {object} where - Hangi kayıtların silineceğini belirleyen koşul nesnesi.
* @returns {Promise<number>} Silinen kayıt sayısını içeren bir Promise.
*/
delete(table, where) {}
/**
* Birden çok kaydı toplu olarak ekler.
* @param {string} table - Verilerin ekleneceği tablo veya koleksiyonun adı.
* @param {Array<object>} dataArray - Eklenecek kayıtları içeren bir dizi.
* @returns {Promise<number>} Eklenen kayıt sayısını içeren bir Promise.
*/
bulkInsert(table, dataArray) {}
/**
* Numerik alanları artırır (increment).
* @param {string} table - Verinin güncelleneceği tablo veya koleksiyonun adı.
* @param {object} increments - Artırılacak alanlar ve miktarları (örn: { views: 1, likes: 2 }).
* @param {object} where - Hangi kayıtların güncelleneceğini belirleyen koşul nesnesi.
* @returns {Promise<number>} Etkilenen kayıt sayısını içeren bir Promise.
*/
increment(table, increments, where) {}
/**
* Numerik alanları azaltır (decrement).
* @param {string} table - Verinin güncelleneceği tablo veya koleksiyonun adı.
* @param {object} decrements - Azaltılacak alanlar ve miktarları (örn: { stock: 1, count: 5 }).
* @param {object} where - Hangi kayıtların güncelleneceğini belirleyen koşul nesnesi.
* @returns {Promise<number>} Etkilenen kayıt sayısını içeren bir Promise.
*/
decrement(table, decrements, where) {}
/**
* Veritabanı bağlantısını güvenli bir şekilde sonlandırır.
* @returns {Promise<void>}
*/
close() {}
// Diğer metotları da buraya ekleyebilirsiniz (updateOne, deleteOne, ensureTable vb.)
}
// Bu dosyanın bir modül olarak tanınması ve tipin export edilmesi için bu satır önemli.
module.exports = IDatabase;