import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics'; import { Model, ModelField } from '@vmfvmf/ywtc-lib'; import { qryChatGpt } from '../../../../shared/chatgpt-api'; import { camelize, dasherize } from '@angular-devkit/core/src/utils/strings'; import { getEnumById, getPrjSrd } from '../../../../router.gen'; import { E2EGenerator } from '../../../../shared/generator'; import { addEntitiesFormFields, addEnumImports, getFormFieldsImports, getImport, setImport } from '../update-page/generate.gen'; export function gen(model: Model): Rule { return async (tree: Tree, _context: SchematicContext) => { model = new Model(model); setImport(new Set()); addEnumImports(model); const columnsFieldNameMap = new Map(); const formFields = addEntitiesFormFields(model); model.getAllFields().map(getFormFieldsImports); const fieldsStr = model.getAllFields().map(f => `${camelize(model.name)}FormFields.${f.name}`).join(',\n\t\t'); model.fields .forEach((f: ModelField) => columnsFieldNameMap.set(dasherize(f.name).replace('-', '_'), f.name)); const importStr = Array.from(getImport()).join('\n'); return new E2EGenerator(__filename).gen({...getPrjSrd(), importStr, columnsFieldNameMap, formFields, fieldsStr }); }; } export function importEnums(fields: Array) { return fields .filter(f => f.angularType == 'ENUM') .map(f => `import { ${f.enumDefName} } from '../../../src/app/demo-frontend/enums/${dasherize(f.enumDefName)}';`) }