@autobe/agent
Version:
AI backend server code generator
45 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AutoBeDatabaseModelProgrammer = void 0;
const utils_1 = require("@typia/utils");
const pluralize_1 = require("pluralize");
var AutoBeDatabaseModelProgrammer;
(function (AutoBeDatabaseModelProgrammer) {
AutoBeDatabaseModelProgrammer.emend = (model) => {
model.name = AutoBeDatabaseModelProgrammer.fixName(model.name);
for (const ff of model.foreignFields) {
ff.relation.oppositeName = ff.unique
? (0, pluralize_1.singular)(ff.relation.oppositeName)
: (0, pluralize_1.plural)(ff.relation.oppositeName);
}
};
AutoBeDatabaseModelProgrammer.fixName = (name) => {
return (0, pluralize_1.plural)(utils_1.NamingConvention.snake(name));
};
AutoBeDatabaseModelProgrammer.getNeighbors = (props) => {
const everything = new Map(props.application.files
.map((f) => f.models)
.flat()
.map((m) => [m.name, m]));
const unique = new Map();
// add myself
unique.set(props.model.name, props.model);
// add parent models
props.model.foreignFields.forEach((ff) => {
const gotten = everything.get(ff.relation.targetModel);
if (gotten !== undefined)
unique.set(gotten.name, gotten);
});
// add children models
for (const model of unique.values()) {
const ff = model.foreignFields.find((ff) => ff.relation.targetModel === props.model.name);
if (ff !== undefined) {
const parent = everything.get(ff.relation.targetModel);
if (parent !== undefined)
unique.set(parent.name, parent);
}
}
return Array.from(unique.values());
};
})(AutoBeDatabaseModelProgrammer || (exports.AutoBeDatabaseModelProgrammer = AutoBeDatabaseModelProgrammer = {}));
//# sourceMappingURL=AutoBeDatabaseModelProgrammer.js.map