import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics'; import { getPrjSrd } from '../../router.gen'; import { IModel } from '@vmfvmf/ywtc-lib'; import { dasherize } from '@angular-devkit/core/src/utils/strings'; import { UcType } from '@vmfvmf/ywtc-lib/dist/model.enums'; export function gen(model: IModel): Rule { return (tree: Tree, _context: SchematicContext) => { if ([UcType.CHILD_FORM, UcType.CHILD_TABLE].includes(model.ucType)) { return tree; } const insertAllMenusSqlPath = `ywtc-output/${getPrjSrd().prjNDashd}-backend/sql/insert-all-menus.sql`; const updatedInsertAllMenusSql = updateInsertAllMenusSql(getFileContent(tree, insertAllMenusSqlPath)!, dasherize(model.name!)); tree.overwrite(insertAllMenusSqlPath, updatedInsertAllMenusSql); return tree; }; } function getFileContent(tree: Tree, fileName: string) { if (!tree.exists(fileName)) { throw new Error(`File: ${fileName} NOT FOUND.`) } return tree.read(fileName)?.toString(); } function updateInsertAllMenusSql(content: string, modelName: string) { return content += `source insert-menu-${modelName}.sql;\n`; }