@@ -44,13 +44,16 @@ type Policies = ReturnType<typeof analyzePolicies>;
44
44
*/
45
45
export class RESTfulOpenAPIGenerator extends OpenAPIGeneratorBase {
46
46
private warnings : string [ ] = [ ] ;
47
+ private modelNameMapping : Record < string , string > ;
47
48
48
49
constructor ( protected model : Model , protected options : PluginOptions , protected dmmf : DMMF . Document ) {
49
50
super ( model , options , dmmf ) ;
50
51
51
52
if ( this . options . omitInputDetails !== undefined ) {
52
53
throw new PluginError ( name , '"omitInputDetails" option is not supported for "rest" flavor' ) ;
53
54
}
55
+
56
+ this . modelNameMapping = this . getOption ( 'modelNameMapping' , { } as Record < string , string > ) ;
54
57
}
55
58
56
59
generate ( ) {
@@ -126,6 +129,10 @@ export class RESTfulOpenAPIGenerator extends OpenAPIGeneratorBase {
126
129
return result ;
127
130
}
128
131
132
+ private mapModelName ( modelName : string ) : string {
133
+ return this . modelNameMapping [ modelName ] ?? modelName ;
134
+ }
135
+
129
136
private generatePathsForModel ( model : DMMF . Model , zmodel : DataModel ) : OAPI . PathItemObject | undefined {
130
137
const result : Record < string , OAPI . PathItemObject > = { } ;
131
138
@@ -139,9 +146,11 @@ export class RESTfulOpenAPIGenerator extends OpenAPIGeneratorBase {
139
146
140
147
const resourceMeta = getModelResourceMeta ( zmodel ) ;
141
148
149
+ const modelName = this . mapModelName ( model . name ) ;
150
+
142
151
// GET /resource
143
152
// POST /resource
144
- result [ `${ prefix } /${ lowerCaseFirst ( model . name ) } ` ] = {
153
+ result [ `${ prefix } /${ lowerCaseFirst ( modelName ) } ` ] = {
145
154
get : this . makeResourceList ( zmodel , policies , resourceMeta ) ,
146
155
post : this . makeResourceCreate ( zmodel , policies , resourceMeta ) ,
147
156
} ;
@@ -150,10 +159,10 @@ export class RESTfulOpenAPIGenerator extends OpenAPIGeneratorBase {
150
159
// PUT /resource/{id}
151
160
// PATCH /resource/{id}
152
161
// DELETE /resource/{id}
153
- result [ `${ prefix } /${ lowerCaseFirst ( model . name ) } /{id}` ] = {
162
+ result [ `${ prefix } /${ lowerCaseFirst ( modelName ) } /{id}` ] = {
154
163
get : this . makeResourceFetch ( zmodel , policies , resourceMeta ) ,
155
- put : this . makeResourceUpdate ( zmodel , policies , `update-${ model . name } -put` , resourceMeta ) ,
156
- patch : this . makeResourceUpdate ( zmodel , policies , `update-${ model . name } -patch` , resourceMeta ) ,
164
+ put : this . makeResourceUpdate ( zmodel , policies , `update-${ modelName } -put` , resourceMeta ) ,
165
+ patch : this . makeResourceUpdate ( zmodel , policies , `update-${ modelName } -patch` , resourceMeta ) ,
157
166
delete : this . makeResourceDelete ( zmodel , policies , resourceMeta ) ,
158
167
} ;
159
168
@@ -165,14 +174,14 @@ export class RESTfulOpenAPIGenerator extends OpenAPIGeneratorBase {
165
174
}
166
175
167
176
// GET /resource/{id}/{relationship}
168
- const relatedDataPath = `${ prefix } /${ lowerCaseFirst ( model . name ) } /{id}/${ field . name } ` ;
177
+ const relatedDataPath = `${ prefix } /${ lowerCaseFirst ( modelName ) } /{id}/${ field . name } ` ;
169
178
let container = result [ relatedDataPath ] ;
170
179
if ( ! container ) {
171
180
container = result [ relatedDataPath ] = { } ;
172
181
}
173
182
container . get = this . makeRelatedFetch ( zmodel , field , relationDecl , resourceMeta ) ;
174
183
175
- const relationshipPath = `${ prefix } /${ lowerCaseFirst ( model . name ) } /{id}/relationships/${ field . name } ` ;
184
+ const relationshipPath = `${ prefix } /${ lowerCaseFirst ( modelName ) } /{id}/relationships/${ field . name } ` ;
176
185
container = result [ relationshipPath ] ;
177
186
if ( ! container ) {
178
187
container = result [ relationshipPath ] = { } ;
0 commit comments