data-seed-generator
Version:
seed-generator is an npm package designed to simplify the process of adding data to the database
80 lines (79 loc) • 3.14 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { Sequelize } from "sequelize";
import mongoose from "mongoose";
import casual from "casual";
/**
*
* @param {*} numOfRecords
* @param {*} customTableSchema
* @param {*} tableName
* @param {*} sequelizeConfig
*/
export const generateSeedDataSequelize = (numOfRecords, customTableSchema, tableName, sequelizeConfig = {}) => __awaiter(void 0, void 0, void 0, function* () {
// Create a Sequelize instance
const sequelize = new Sequelize(sequelizeConfig);
let Model;
// Check if the model already exists
if (sequelize.isDefined(tableName)) {
Model = sequelize.model(tableName);
}
else {
// If the model doesn't exist, define it
Model = sequelize.define(tableName, customTableSchema);
}
const sequelizeSeedData = [];
for (let i = 0; i < numOfRecords; i++) {
const dynamicRecord = {};
// Generate random data for each field defined in customTableSchema
for (const field in customTableSchema) {
dynamicRecord[field] = casual[field] || ''; // Use casual for random data or set a default value
}
sequelizeSeedData.push(dynamicRecord);
}
// Drop and recreate the table with the new data
yield Model.sync({ force: true });
// Insert the seed data
return Model.bulkCreate(sequelizeSeedData);
});
/**
*
* @param {*} numOfRecords
* @param {*} mongooseConfig
* @param {*} modelName
* @param {*} customFields
* @returns
*/
/**
* Generate seed data for mongoose
*/
export const generateSeedDataMongoose = (numOfRecords, mongooseConfig, modelName, customFields = {}) => __awaiter(void 0, void 0, void 0, function* () {
yield mongoose.connect(mongooseConfig);
// Check if the model already exists
let Model;
try {
Model = mongoose.model(modelName);
}
catch (e) {
// If the model doesn't exist, create it
const dynamicSchema = new mongoose.Schema(customFields);
Model = mongoose.model(modelName, dynamicSchema);
}
const mongooseSeedData = [];
for (let i = 0; i < numOfRecords; i++) {
const dynamicRecord = {};
// Generate random data for each field defined in customFields
for (const field in customFields) {
dynamicRecord[field] = casual[field] || ""; // Use casual for random data or set a default value
}
mongooseSeedData.push(dynamicRecord);
}
return Model.insertMany(mongooseSeedData);
});