Browse Source

feat: group import refs before mapping them to models

pull/5137/head
Arman Ozak 6 years ago
parent
commit
8753450857
  1. 15
      npm/ng-packs/packages/schematics/src/commands/api/index.ts
  2. 6
      npm/ng-packs/packages/schematics/src/utils/model.ts

15
npm/ng-packs/packages/schematics/src/commands/api/index.ts

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

6
npm/ng-packs/packages/schematics/src/utils/model.ts

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

Loading…
Cancel
Save