@@ -44,13 +44,16 @@ type Policies = ReturnType<typeof analyzePolicies>;
4444 */ 
4545export  class  RESTfulOpenAPIGenerator  extends  OpenAPIGeneratorBase  { 
4646    private  warnings : string [ ]  =  [ ] ; 
47+     private  modelNameMapping : Record < string ,  string > ; 
4748
4849    constructor ( protected  model : Model ,  protected  options : PluginOptions ,  protected  dmmf : DMMF . Document )  { 
4950        super ( model ,  options ,  dmmf ) ; 
5051
5152        if  ( this . options . omitInputDetails  !==  undefined )  { 
5253            throw  new  PluginError ( name ,  '"omitInputDetails" option is not supported for "rest" flavor' ) ; 
5354        } 
55+ 
56+         this . modelNameMapping  =  this . getOption ( 'modelNameMapping' ,  { }  as  Record < string ,  string > ) ; 
5457    } 
5558
5659    generate ( )  { 
@@ -126,6 +129,10 @@ export class RESTfulOpenAPIGenerator extends OpenAPIGeneratorBase {
126129        return  result ; 
127130    } 
128131
132+     private  mapModelName ( modelName : string ) : string  { 
133+         return  this . modelNameMapping [ modelName ]  ??  modelName ; 
134+     } 
135+ 
129136    private  generatePathsForModel ( model : DMMF . Model ,  zmodel : DataModel ) : OAPI . PathItemObject  |  undefined  { 
130137        const  result : Record < string ,  OAPI . PathItemObject >  =  { } ; 
131138
@@ -139,9 +146,11 @@ export class RESTfulOpenAPIGenerator extends OpenAPIGeneratorBase {
139146
140147        const  resourceMeta  =  getModelResourceMeta ( zmodel ) ; 
141148
149+         const  modelName  =  this . mapModelName ( model . name ) ; 
150+ 
142151        // GET /resource 
143152        // POST /resource 
144-         result [ `${ prefix } ${ lowerCaseFirst ( model . name ) }  ]  =  { 
153+         result [ `${ prefix } ${ lowerCaseFirst ( modelName ) }  ]  =  { 
145154            get : this . makeResourceList ( zmodel ,  policies ,  resourceMeta ) , 
146155            post : this . makeResourceCreate ( zmodel ,  policies ,  resourceMeta ) , 
147156        } ; 
@@ -150,10 +159,10 @@ export class RESTfulOpenAPIGenerator extends OpenAPIGeneratorBase {
150159        // PUT /resource/{id} 
151160        // PATCH /resource/{id} 
152161        // DELETE /resource/{id} 
153-         result [ `${ prefix } ${ lowerCaseFirst ( model . name ) }  ]  =  { 
162+         result [ `${ prefix } ${ lowerCaseFirst ( modelName ) }  ]  =  { 
154163            get : this . makeResourceFetch ( zmodel ,  policies ,  resourceMeta ) , 
155-             put : this . makeResourceUpdate ( zmodel ,  policies ,  `update-${ model . name }  ,  resourceMeta ) , 
156-             patch : this . makeResourceUpdate ( zmodel ,  policies ,  `update-${ model . name }  ,  resourceMeta ) , 
164+             put : this . makeResourceUpdate ( zmodel ,  policies ,  `update-${ modelName }  ,  resourceMeta ) , 
165+             patch : this . makeResourceUpdate ( zmodel ,  policies ,  `update-${ modelName }  ,  resourceMeta ) , 
157166            delete : this . makeResourceDelete ( zmodel ,  policies ,  resourceMeta ) , 
158167        } ; 
159168
@@ -165,14 +174,14 @@ export class RESTfulOpenAPIGenerator extends OpenAPIGeneratorBase {
165174            } 
166175
167176            // GET /resource/{id}/{relationship} 
168-             const  relatedDataPath  =  `${ prefix } ${ lowerCaseFirst ( model . name ) } ${ field . name }  ; 
177+             const  relatedDataPath  =  `${ prefix } ${ lowerCaseFirst ( modelName ) } ${ field . name }  ; 
169178            let  container  =  result [ relatedDataPath ] ; 
170179            if  ( ! container )  { 
171180                container  =  result [ relatedDataPath ]  =  { } ; 
172181            } 
173182            container . get  =  this . makeRelatedFetch ( zmodel ,  field ,  relationDecl ,  resourceMeta ) ; 
174183
175-             const  relationshipPath  =  `${ prefix } ${ lowerCaseFirst ( model . name ) } ${ field . name }  ; 
184+             const  relationshipPath  =  `${ prefix } ${ lowerCaseFirst ( modelName ) } ${ field . name }  ; 
176185            container  =  result [ relationshipPath ] ; 
177186            if  ( ! container )  { 
178187                container  =  result [ relationshipPath ]  =  { } ; 
0 commit comments