@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.
68 lines (62 loc) • 2.24 kB
JavaScript
const JsonDatabase = require("../jsondatabase/index");
const YamlDatabase = require("../yamldatabase/index"); // Assuming you've saved the YAML class in this path
const MongoDB = require("../mongodb/index");
const MySQLDatabase = require("../mysql/index");
const SQLiteDatabase = require("../sqldb/index");
const RedisDatabase = require("../redis/index");
const PostgreSQL = require("../postgresql/index");
/**
* Migrates data from one database to another.
* @param {Object} source - Source database configuration.
* @param {Object} target - Target database configuration.
*/
async function migrateData(source, target) {
const sourceDb = await initializeDatabase(source);
const targetDb = await initializeDatabase(target);
const allData = await sourceDb.getAllData();
console.log(allData);
for (const [key, value] of Object.entries(allData)) {
await targetDb.set(key, value);
}
console.log(`Migration completed from ${source.type} to ${target.type}`);
}
/**
* Initializes a database instance based on the configuration.
* @param {Object} config - Database configuration.
* @returns {Object} - Database instance.
*/
async function initializeDatabase(config) {
switch (config.type) {
case "json":
return new JsonDatabase(config.options.filePath);
case "yaml":
return new YamlDatabase(config.options.filePath);
case "csv":
return new YamlDatabase(config.options.filePath);
case "mongodb":
const mongoClient = await MongoDB.createData(
config.options.database,
config.options.collection,
config.options.data,
undefined,
config.options.url
);
return mongoClient;
case "mysql":
const mysqlDb = new MySQLDatabase();
await mysqlDb.connect(config.options);
return mysqlDb;
case "sqlite":
return new SQLiteDatabase(config.options.filePath);
case "redis":
const redisDb = new RedisDatabase(config.options);
await redisDb.connect();
return redisDb;
case "postgresql":
return new PostgreSQL(config.options);
default:
throw new Error(`Unsupported database type: ${config.type}`);
}
}
// Export the migrateData function
module.exports = migrateData;