feat: group import refs before mapping them to models

pull/5137/head
Arman Ozak 5 years ago
parent bf017bb7f0
commit 8753450857

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

@ -1,10 +1,10 @@
import { Model } from '../models';
import { parseNamespace } from './namespace';
export function createImportRefToModelMapper(solution: string) {
return (importRef: string) => {
export function createImportRefsToModelMapper(solution: string) {
return (importRefs: string[]) => {
return new Model({
namespace: parseNamespace(solution, importRef),
namespace: parseNamespace(solution, importRefs[0]),
});
};
}

Loading…
Cancel
Save