- Testing changes

This commit is contained in:
Ferdi Koomen 2021-01-27 11:10:53 +01:00
parent 5e11e792a8
commit f57b4c3538
6 changed files with 81 additions and 40 deletions

View File

@ -1,14 +1,14 @@
import type { Model } from '../../../client/interfaces/Model';
import { getPattern } from '../../../utils/getPattern';
import type { OpenApi } from '../interfaces/OpenApi';
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
import { extendEnum } from './extendEnum';
import { getComment } from './getComment';
import { getEnum } from './getEnum';
import { getEnumFromDescription } from './getEnumFromDescription';
import { getModelComposition } from './getModelComposition';
import { getModelProperties } from './getModelProperties';
import { getType } from './getType';
import type {Model} from '../../../client/interfaces/Model';
import {getPattern} from '../../../utils/getPattern';
import type {OpenApi} from '../interfaces/OpenApi';
import type {OpenApiSchema} from '../interfaces/OpenApiSchema';
import {extendEnum} from './extendEnum';
import {getComment} from './getComment';
import {getEnum} from './getEnum';
import {getEnumFromDescription} from './getEnumFromDescription';
import {getModelComposition} from './getModelComposition';
import {getModelProperties} from './getModelProperties';
import {getType} from './getType';
export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefinition: boolean = false, name: string = ''): Model {
const model: Model = {
@ -119,7 +119,7 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
}
if (definition.allOf?.length) {
const composition = getModelComposition(openApi, definition.allOf, 'all-of', getModel);
const composition = getModelComposition(openApi, definition, definition.allOf, 'all-of', getModel);
model.export = composition.type;
model.imports.push(...composition.imports);
model.enums.push(...composition.enums);

View File

@ -1,12 +1,13 @@
import type { ModelComposition } from '../../../client/interfaces/ModelComposition';
import type { OpenApi } from '../interfaces/OpenApi';
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
import type { getModel } from './getModel';
import type {ModelComposition} from '../../../client/interfaces/ModelComposition';
import type {OpenApi} from '../interfaces/OpenApi';
import type {OpenApiSchema} from '../interfaces/OpenApiSchema';
import type {getModel} from './getModel';
import {getModelProperties} from "./getModelProperties";
// Fix for circular dependency
export type GetModelFn = typeof getModel;
export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema[], type: 'one-of' | 'any-of' | 'all-of', getModel: GetModelFn): ModelComposition {
export function getModelComposition(openApi: OpenApi, definition: OpenApiSchema, definitions: OpenApiSchema[], type: 'one-of' | 'any-of' | 'all-of', getModel: GetModelFn): ModelComposition {
const composition: ModelComposition = {
type,
imports: [],
@ -29,5 +30,24 @@ export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema
composition.properties.push(model);
});
if (definition.properties) {
composition.properties.push({
name: 'properties',
export: 'interface',
type: 'any',
base: 'any',
template: null,
link: null,
description: '',
isDefinition: false,
isReadOnly: false,
isNullable: false,
isRequired: false,
imports: [],
enum: [],
enums: [],
properties: [...getModelProperties(openApi, definition, getModel)],
});
}
return composition;
}

View File

@ -16,7 +16,7 @@ export function getOperationParameterDefault(parameter: OpenApiParameter, operat
case 'int':
case 'integer':
case 'number':
if (operationParameter.export == 'enum' && operationParameter.enum?.[parameter.default]) {
if (operationParameter.export === 'enum' && operationParameter.enum?.[parameter.default]) {
return operationParameter.enum[parameter.default].value;
}
return parameter.default;

View File

@ -1,15 +1,15 @@
import type { Model } from '../../../client/interfaces/Model';
import { getPattern } from '../../../utils/getPattern';
import type { OpenApi } from '../interfaces/OpenApi';
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
import { extendEnum } from './extendEnum';
import { getComment } from './getComment';
import { getEnum } from './getEnum';
import { getEnumFromDescription } from './getEnumFromDescription';
import { getModelComposition } from './getModelComposition';
import { getModelDefault } from './getModelDefault';
import { getModelProperties } from './getModelProperties';
import { getType } from './getType';
import type {Model} from '../../../client/interfaces/Model';
import {getPattern} from '../../../utils/getPattern';
import type {OpenApi} from '../interfaces/OpenApi';
import type {OpenApiSchema} from '../interfaces/OpenApiSchema';
import {extendEnum} from './extendEnum';
import {getComment} from './getComment';
import {getEnum} from './getEnum';
import {getEnumFromDescription} from './getEnumFromDescription';
import {getModelComposition} from './getModelComposition';
import {getModelDefault} from './getModelDefault';
import {getModelProperties} from './getModelProperties';
import {getType} from './getType';
export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefinition: boolean = false, name: string = ''): Model {
const model: Model = {
@ -127,7 +127,7 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
}
if (definition.oneOf?.length) {
const composition = getModelComposition(openApi, definition.oneOf, 'one-of', getModel);
const composition = getModelComposition(openApi, definition, definition.oneOf, 'one-of', getModel);
model.export = composition.type;
model.imports.push(...composition.imports);
model.enums.push(...composition.enums);
@ -136,7 +136,7 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
}
if (definition.anyOf?.length) {
const composition = getModelComposition(openApi, definition.anyOf, 'any-of', getModel);
const composition = getModelComposition(openApi, definition, definition.anyOf, 'any-of', getModel);
model.export = composition.type;
model.imports.push(...composition.imports);
model.enums.push(...composition.enums);
@ -145,7 +145,7 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
}
if (definition.allOf?.length) {
const composition = getModelComposition(openApi, definition.allOf, 'all-of', getModel);
const composition = getModelComposition(openApi, definition, definition.allOf, 'all-of', getModel);
model.export = composition.type;
model.imports.push(...composition.imports);
model.enums.push(...composition.enums);
@ -157,9 +157,9 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
model.export = 'interface';
model.type = 'any';
model.base = 'any';
model.default = getModelDefault(definition, model);
if (definition.properties) {
model.default = getModelDefault(definition, model);
const properties = getModelProperties(openApi, definition, getModel);
properties.forEach(property => {
model.imports.push(...property.imports);

View File

@ -1,12 +1,13 @@
import type { ModelComposition } from '../../../client/interfaces/ModelComposition';
import type { OpenApi } from '../interfaces/OpenApi';
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
import type { getModel } from './getModel';
import type {ModelComposition} from '../../../client/interfaces/ModelComposition';
import type {OpenApi} from '../interfaces/OpenApi';
import type {OpenApiSchema} from '../interfaces/OpenApiSchema';
import type {getModel} from './getModel';
import {getModelProperties} from "./getModelProperties";
// Fix for circular dependency
export type GetModelFn = typeof getModel;
export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema[], type: 'one-of' | 'any-of' | 'all-of', getModel: GetModelFn): ModelComposition {
export function getModelComposition(openApi: OpenApi, definition: OpenApiSchema, definitions: OpenApiSchema[], type: 'one-of' | 'any-of' | 'all-of', getModel: GetModelFn): ModelComposition {
const composition: ModelComposition = {
type,
imports: [],
@ -29,5 +30,25 @@ export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema
composition.properties.push(model);
});
if (definition.properties) {
composition.properties.push({
name: 'properties',
export: 'interface',
type: 'any',
base: 'any',
template: null,
link: null,
description: '',
isDefinition: false,
isReadOnly: false,
isNullable: false,
isRequired: false,
imports: [],
enum: [],
enums: [],
properties: [...getModelProperties(openApi, definition, getModel)],
});
}
return composition;
}

View File

@ -16,7 +16,7 @@ export function getModelDefault(definition: OpenApiSchema, model?: Model): strin
case 'int':
case 'integer':
case 'number':
if (model?.export == 'enum' && model.enum?.[definition.default]) {
if (model?.export === 'enum' && model.enum?.[definition.default]) {
return model.enum[definition.default].value;
}
return definition.default;