|
|
|
|
@ -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)),
|
|
|
|
|
]);
|
|
|
|
|
|