keystone-seeder
Version:
A flexible data seeder for Keystone 6 projects
60 lines (59 loc) • 3.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateFieldValue = exports.buildSeedData = exports.initializeContext = exports.getFieldsMeta = exports.getModelConfig = exports.getAvailableModels = void 0;
exports.seed = seed;
const models_1 = require("./models");
const data_generator_1 = require("./data-generator");
/**
* Main seeding function that creates records for a specified model
*/
async function seed(context, { modelName, recordCount, relationMode }) {
try {
const model = await (0, models_1.getModelConfig)(modelName);
const fieldsMeta = await (0, models_1.getFieldsMeta)(context, modelName);
let successCount = 0;
console.log(`\n(seeder) Starting to seed ${recordCount} ${modelName} records...\n`);
for (let i = 0; i < recordCount; i++) {
try {
// Generate seed data with relation field information
const seedData = (0, data_generator_1.buildSeedData)(model, fieldsMeta, relationMode ? context : undefined, relationMode);
// Handle relation fields if present
const finalData = { ...seedData };
delete finalData._relationFields;
// Process relation fields if they exist
if (seedData._relationFields && relationMode) {
for (const relationField of seedData._relationFields) {
const { fieldName, relatedModel, isList } = relationField;
// Import the handleRelationField function
// Use the handleRelationField function to process relations
const relationData = await (0, data_generator_1.handleRelationField)(context, { name: fieldName, type: relatedModel, isList }, relationMode);
if (relationData) {
finalData[fieldName] = relationData;
}
}
}
console.log(`(seeder) Creating ${modelName} entry #${i + 1}/${recordCount}...`);
await context.sudo().db[modelName].createOne({ data: finalData });
successCount++;
}
catch (error) {
console.error(`Error creating ${modelName} entry #${i + 1}:`, error);
}
}
console.log(`\n(seeder) Seeding complete! Successfully created ${successCount}/${recordCount} records.`);
}
catch (error) {
console.error("Error during seeding process:", error);
throw error;
}
}
// Export all necessary functions
var models_2 = require("./models");
Object.defineProperty(exports, "getAvailableModels", { enumerable: true, get: function () { return models_2.getAvailableModels; } });
Object.defineProperty(exports, "getModelConfig", { enumerable: true, get: function () { return models_2.getModelConfig; } });
Object.defineProperty(exports, "getFieldsMeta", { enumerable: true, get: function () { return models_2.getFieldsMeta; } });
var context_1 = require("./context");
Object.defineProperty(exports, "initializeContext", { enumerable: true, get: function () { return context_1.initializeContext; } });
var data_generator_2 = require("./data-generator");
Object.defineProperty(exports, "buildSeedData", { enumerable: true, get: function () { return data_generator_2.buildSeedData; } });
Object.defineProperty(exports, "generateFieldValue", { enumerable: true, get: function () { return data_generator_2.generateFieldValue; } });