11const AbstractApiGenerator = require ( '../openapi' ) ;
2+ const { isPaginationEnabled } = require ( '../helpers' ) ;
23const utils = require ( '../utils' ) ;
34
45function addDefinitionToSchemas ( schemas , definition , model , modelName ) {
@@ -93,7 +94,7 @@ class OpenApiV3Generator extends AbstractApiGenerator {
9394 getOperationsRefs ( service , model ) {
9495 const modelList = `${ model } _list` ;
9596 const refs = {
96- findResponse : modelList ,
97+ findResponse : isPaginationEnabled ( service ) ? ` ${ model } _pagination` : modelList ,
9798 getResponse : model ,
9899 createRequest : model ,
99100 createResponse : model ,
@@ -414,7 +415,7 @@ class OpenApiV3Generator extends AbstractApiGenerator {
414415 } ;
415416 }
416417
417- applyDefinitionsToSpecs ( service , model , modelName ) {
418+ applyDefinitionsToSpecs ( service , model , modelName , refs ) {
418419 if ( typeof service . docs . definition !== 'undefined' ) {
419420 addDefinitionToSchemas ( this . specs . components . schemas , service . docs . definition , model , modelName ) ;
420421 }
@@ -433,6 +434,22 @@ class OpenApiV3Generator extends AbstractApiGenerator {
433434 this . config . defaults . schemasGenerator ( service , model , modelName , this . specs . components . schemas )
434435 ) ;
435436 }
437+ if ( isPaginationEnabled ( service ) &&
438+ refs . findResponse === `${ model } _pagination` &&
439+ typeof this . specs . components . schemas [ `${ model } _list` ] !== 'undefined' &&
440+ typeof this . specs . components . schemas [ `${ model } _pagination` ] === 'undefined'
441+ ) {
442+ this . specs . components . schemas [ `${ model } _pagination` ] = {
443+ title : `${ modelName } pagination result` ,
444+ type : 'object' ,
445+ properties : {
446+ total : { type : 'integer' } ,
447+ limit : { type : 'integer' } ,
448+ skip : { type : 'integer' } ,
449+ data : { $ref : `#/components/schemas/${ model } _list` }
450+ }
451+ } ;
452+ }
436453 }
437454
438455 getPathParameterSpec ( name ) {
0 commit comments