1
1
import type { OpenAPIV3 } from "openapi-types" ;
2
2
import { OperationBuilder , type DocumentBuilder } from "openapi-metadata/builders" ;
3
3
import type { AdonisRoute } from "../types" ;
4
- import { loadApiOperation , loadControllerOperation } from "openapi-metadata/loaders" ;
4
+ import { loadApiOperation , loadApiParam , loadControllerOperation } from "openapi-metadata/loaders" ;
5
5
import { normalizeRoutePattern } from "../utils/normalizeRoutePattern" ;
6
6
7
7
export async function loadRoute ( document : DocumentBuilder , route : AdonisRoute ) {
8
8
if ( typeof route . handler !== "object" || ! Array . isArray ( route . handler . reference ) ) {
9
9
return ;
10
10
}
11
11
12
- const importer = route . handler . reference [ 0 ] as ( ) => Promise < { default : any } > ;
12
+ const importer = route . handler . reference [ 0 ] as ( ) => Promise < {
13
+ default : any ;
14
+ } > ;
13
15
const propertyKey = route . handler . reference [ 1 ] as string ;
14
16
15
17
const target = ( await importer ( ) . then ( ( t : any ) => t . default ) ) as any ;
@@ -21,11 +23,17 @@ export async function loadRoute(document: DocumentBuilder, route: AdonisRoute) {
21
23
22
24
const operation = new OperationBuilder ( ) ;
23
25
26
+ const { params, pattern } = normalizeRoutePattern ( route . pattern ) ;
27
+
24
28
loadApiOperation ( operation , {
25
29
method : method . toLowerCase ( ) as `${OpenAPIV3 . HttpMethods } `,
26
- pattern : normalizeRoutePattern ( route . pattern ) ,
30
+ pattern,
27
31
} ) ;
28
32
33
+ for ( const name of params ) {
34
+ loadApiParam ( document , operation , { name, type : "string" } ) ;
35
+ }
36
+
29
37
loadControllerOperation ( document , operation , target . prototype , propertyKey ) ;
30
38
31
39
document . addOperation ( operation ) ;
0 commit comments