UNPKG

@autobe/agent

Version:

AI backend server code generator

45 lines 2.01 kB
"use strict"; 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