import { Rule, SchematicContext, Tree, url, apply, mergeWith, renameTemplateFiles, template, move } from '@angular-devkit/schematics'; import { IBasicConfig, Project } from '@vmfvmf/ywtc-lib'; import { initiateProjectTemplate } from '../../ng-new.gen'; import { getPrjSrd } from '../../router.gen'; export function gen(prj: Project): Rule { return async (tree: Tree, _context: SchematicContext) => { const projectDir = tree.getDir(`ywtc-output/${getPrjSrd().prjNDashd}-backend`); prj.config.sharedConfig.frontendPort = (4200 + prj.id).toString(); prj.config.sharedConfig.backendPort = (8080 + prj.id).toString(); prj.config.databaseConfig.user = prj.config.databaseConfig.dbName + '_user'; prj.config.databaseConfig.psw = '12345678'; const sourceTemplates = url('../../../src/backend/new/files'); setSqlDialect(prj.config); const appSource = apply(sourceTemplates, [ renameTemplateFiles(), template({...prj.config, ...prj.config.sharedConfig}), move(projectDir.path) ]); return mergeWith(appSource); }; } const sqlDialect = new Map([ ['MYSQL', 'MySQL8Dialect'] ]); function setSqlDialect(prjConfig: IBasicConfig) { prjConfig.databaseConfig!.dialect = sqlDialect.get(prjConfig.databaseConfig!.type!); }