|
|
|
@ -1,7 +1,7 @@ |
|
|
|
import { normalize, strings } from '@angular-devkit/core'; |
|
|
|
import { applyTemplates, branchAndMerge, chain, move, SchematicContext, SchematicsException, Tree, url } from '@angular-devkit/schematics'; |
|
|
|
import { Exception } from '../../enums'; |
|
|
|
import { applyWithOverwrite, buildDefaultPath, createApiDefinitionReader, createControllerToServiceMapper, createImportRefToModelMapper, interpolate, resolveProject, serializeParameters } from '../../utils'; |
|
|
|
import { applyWithOverwrite, buildDefaultPath, createApiDefinitionReader, createControllerToServiceMapper, createImportRefsToModelMapper, interpolate, resolveProject, serializeParameters } from '../../utils'; |
|
|
|
import * as cases from '../../utils/text'; |
|
|
|
import type { Schema as GenerateProxySchema } from './schema'; |
|
|
|
|
|
|
|
@ -20,12 +20,15 @@ export default function(params: GenerateProxySchema) { |
|
|
|
|
|
|
|
const mapControllerToService = createControllerToServiceMapper(solution, definition.remoteServiceName); |
|
|
|
const controllers = Object.values(definition.controllers || {}); |
|
|
|
const importRefs: string[] = []; |
|
|
|
const importRefs: Record<string, string[]> = {}; |
|
|
|
|
|
|
|
const createServiceFiles = chain( |
|
|
|
controllers.map(controller => { |
|
|
|
const service = mapControllerToService(controller); |
|
|
|
service.imports.forEach(({refs}) => refs.forEach(ref => importRefs.push(ref))); |
|
|
|
service.imports.forEach(({refs, path}) => refs.forEach(ref => { |
|
|
|
if (!importRefs[path]) return (importRefs[path] = [ref]); |
|
|
|
importRefs[path] = [...new Set([...importRefs[path], ref])]; |
|
|
|
})); |
|
|
|
|
|
|
|
return applyWithOverwrite(url('./files-service'), [ |
|
|
|
applyTemplates({ |
|
|
|
@ -39,14 +42,14 @@ export default function(params: GenerateProxySchema) { |
|
|
|
), |
|
|
|
); |
|
|
|
|
|
|
|
const mapImportRefToModel = createImportRefToModelMapper(solution); |
|
|
|
const mapImportRefsToModel = createImportRefsToModelMapper(solution); |
|
|
|
|
|
|
|
const createModelFiles = chain( |
|
|
|
importRefs.map(ref => { |
|
|
|
Object.values(importRefs).map(refs => { |
|
|
|
return applyWithOverwrite(url('./files-model'), [ |
|
|
|
applyTemplates({ |
|
|
|
...cases, |
|
|
|
...mapImportRefToModel(ref), |
|
|
|
...mapImportRefsToModel(refs), |
|
|
|
}), |
|
|
|
move(normalize(targetPath)), |
|
|
|
]); |
|
|
|
|