@ivamuno/nestjs-openapi
Version:
37 lines (36 loc) • 1.96 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.OperationObjectFactory = void 0;
const model_properties_accessor_1 = require("@nestjs/swagger/dist/services/model-properties-accessor");
const schema_object_factory_1 = require("@nestjs/swagger/dist/services/schema-object-factory");
const swagger_types_mapper_1 = require("@nestjs/swagger/dist/services/swagger-types-mapper");
const utils_1 = require("@nestjs/swagger/dist/utils");
const lodash_1 = require("lodash");
class OperationObjectFactory {
constructor() {
this.modelPropertiesAccessor = new model_properties_accessor_1.ModelPropertiesAccessor();
this.swaggerTypesMapper = new swagger_types_mapper_1.SwaggerTypesMapper();
this.schemaObjectFactory = new schema_object_factory_1.SchemaObjectFactory(this.modelPropertiesAccessor, this.swaggerTypesMapper);
}
create(operation, produces, schemas) {
const { message } = operation;
const messagePayloadType = message.payload.type;
const name = this.schemaObjectFactory.exploreModelSchema(messagePayloadType, schemas);
const discriminator = operation.message.payload.discriminator;
if (operation.message.payload.discriminator) {
schemas.filter(s => s[name] !== undefined).map(s => (s[name].discriminator = discriminator));
}
return this.toRefObject(operation, name, produces);
}
toRefObject(operation, name, produces) {
const asyncOperationObject = lodash_1.omit(operation, 'examples');
return Object.assign(Object.assign({}, asyncOperationObject), { message: {
name: operation.message.name,
payload: {
$ref: utils_1.getSchemaPath(name),
examples: operation.message.payload.examples,
},
} });
}
}
exports.OperationObjectFactory = OperationObjectFactory;
;