@onurege3467/zerohelper
Version:
ZeroHelper is a versatile JavaScript library offering helper functions and database utilities for developers. It supports MongoDB, MySQL, SQLite, Redis, and PostgreSQL.
45 lines (37 loc) • 1.57 kB
JavaScript
const IDatabase = require('./adapters/IDatabase');
const MySQLDatabase = require('./adapters/mysql');
const SQLiteDatabase = require('./adapters/sqlite');
const MongoDBDatabase = require('./adapters/mongodb');
const JsonDatabase = require('./adapters/json');
const adapters = {
mysql: MySQLDatabase,
sqlite: SQLiteDatabase,
mongodb: MongoDBDatabase,
json: JsonDatabase,
};
/**
* Belirtilen adaptör tipine göre bir veritabanı örneği oluşturur ve döndürür.
* Bu bir "Fabrika Fonksiyonu"dur.
*
* @param {object} options - Yapılandırma seçenekleri.
* @param {keyof adapters} options.adapter - Kullanılacak adaptör ('mysql', 'sqlite', vb.).
* @param {object} options.config - Seçilen adaptöre özel yapılandırma.
* @returns {IDatabase} - IDatabase arayüzünü uygulayan bir örnek döndürür.
*/
function createDatabase(options) {
const { adapter, config } = options;
if (!adapter || !adapters[adapter]) {
throw new Error(`Geçersiz veya desteklenmeyen adaptör: ${adapter}. Desteklenenler: ${Object.keys(adapters).join(', ')}`);
}
if (!config) {
throw new Error(`'${adapter}' adaptörü için yapılandırma (config) gereklidir.`);
}
// İlgili adaptör sınıfını al
const DatabaseClass = adapters[adapter];
// Sınıfın bir örneğini oluştur ve doğrudan döndür
return new DatabaseClass(config);
}
// Artık varsayılan olarak bu fonksiyonu export ediyoruz.
module.exports = createDatabase;
// Eğer hem fonksiyonu hem de tipleri export etmek isterseniz:
// module.exports = { createDatabase };