@mongez/gnz
Version:
Generator Z, the next generation of scaffolding tools.
80 lines (79 loc) • 2.57 kB
JavaScript
import {toCamelCase}from'@mongez/reinforcements';import {newLine}from'../../utils/lines.js';import'eslint';import'prettier';function utilizeMigration({ modelClass, unique, index, text, geo, modelPath, uniqueId, name, }) {
if (uniqueId) {
if (!unique) {
unique = ["id"];
}
else if (unique.includes("id") === false) {
unique.unshift("id");
}
}
const bluePrintClassName = `blueprint`;
const migrationFunctionName = `${toCamelCase(name)}Migration`;
// now generate the text for indexes
// unique indexes first
// we need to generate it for migration and for migration down
const uniqueIndexes = unique
.map(column => {
return `${bluePrintClassName}.unique("${column}");`;
})
.join(newLine);
const uniqueIndexesDown = unique
.map(column => {
return `${bluePrintClassName}.dropUniqueIndex("${column}");`;
})
.join(newLine);
// text indexes
const textIndexes = text
.map(column => {
return `${bluePrintClassName}.textIndex("${column}");`;
})
.join(newLine);
const textIndexesDown = text
.map(column => {
return `${bluePrintClassName}.dropTextIndex("${column}");`;
})
.join(newLine);
// normal indexes
const normalIndexes = index
.map(column => {
return `${bluePrintClassName}.index("${column}");`;
})
.join(newLine);
const normalIndexesDown = index
.map(column => {
return `${bluePrintClassName}.dropIndex("${column}");`;
})
.join(newLine);
// geo indexes
const geoIndexes = geo
.map(column => {
return `${bluePrintClassName}.geoIndex("${column}");`;
})
.join(newLine);
const geoIndexesDown = geo
.map(column => {
return `${bluePrintClassName}.dropGeoIndex("${column}");`;
})
.join(newLine);
// now we need to get only the arrays that are not empty
const indexes = [
uniqueIndexes,
textIndexes,
normalIndexes,
geoIndexes,
].filter(indexes => indexes.length > 0);
const indexesDown = [
uniqueIndexesDown,
textIndexesDown,
normalIndexesDown,
geoIndexesDown,
].filter(indexes => indexes.length > 0);
const modelFileName = modelPath;
return {
modelFileName,
bluePrintClassName,
migrationFunctionName,
indexes,
indexesDown,
};
}export{utilizeMigration};//# sourceMappingURL=utilizer.js.map