1- // ------------------------------------------------------------
1+ // ------------------------------------------------------------
22// Copyright (c) Microsoft Corporation. All rights reserved.
33// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
44// ------------------------------------------------------------
55
66using System . Collections . Generic ;
77using System . Linq ;
88using Microsoft . OData . Edm ;
9+ using Microsoft . OData . Edm . Vocabularies ;
910using Microsoft . OpenApi . Any ;
1011using Microsoft . OpenApi . Models ;
1112using Microsoft . OpenApi . OData . Common ;
@@ -158,6 +159,8 @@ protected override void SetParameters(OpenApiOperation operation)
158159 }
159160 }
160161 }
162+
163+ AppendSystemQueryOptions ( function , operation ) ;
161164 }
162165 }
163166
@@ -200,6 +203,57 @@ protected override void AppendCustomParameters(OpenApiOperation operation)
200203 }
201204 }
202205
206+ private void AppendSystemQueryOptions ( IEdmFunction function , OpenApiOperation operation )
207+ {
208+ if ( function . ReturnType . IsCollection ( ) )
209+ {
210+ // $top
211+ if ( Context . CreateTop ( function ) is OpenApiParameter topParameter )
212+ {
213+ operation . Parameters . AppendParameter ( topParameter ) ;
214+ }
215+
216+ // $skip
217+ if ( Context . CreateSkip ( function ) is OpenApiParameter skipParameter )
218+ {
219+ operation . Parameters . AppendParameter ( skipParameter ) ;
220+ }
221+
222+ // $search
223+ if ( Context . CreateSearch ( function ) is OpenApiParameter searchParameter )
224+ {
225+ operation . Parameters . AppendParameter ( searchParameter ) ;
226+ }
227+
228+ // $filter
229+ if ( Context . CreateFilter ( function ) is OpenApiParameter filterParameter )
230+ {
231+ operation . Parameters . AppendParameter ( filterParameter ) ;
232+ }
233+
234+ // $count
235+ if ( Context . CreateCount ( function ) is OpenApiParameter countParameter )
236+ {
237+ operation . Parameters . AppendParameter ( countParameter ) ;
238+ }
239+
240+ if ( function . ReturnType ? . Definition ? . AsElementType ( ) is IEdmEntityType entityType )
241+ {
242+ // $select
243+ if ( Context . CreateSelect ( function , entityType ) is OpenApiParameter selectParameter )
244+ {
245+ operation . Parameters . AppendParameter ( selectParameter ) ;
246+ }
247+
248+ // $orderby
249+ if ( Context . CreateOrderBy ( function , entityType ) is OpenApiParameter orderbyParameter )
250+ {
251+ operation . Parameters . AppendParameter ( orderbyParameter ) ;
252+ }
253+ }
254+ }
255+ }
256+
203257 /// <inheritdoc/>
204258 protected override void SetCustomLinkRelType ( )
205259 {
@@ -211,9 +265,8 @@ protected override void SetCustomLinkRelType()
211265 }
212266 }
213267
214-
215- /// <inheritdoc/>
216- protected override void SetExternalDocs ( OpenApiOperation operation )
268+ /// <inheritdoc/>
269+ protected override void SetExternalDocs ( OpenApiOperation operation )
217270 {
218271 if ( Context . Settings . ShowExternalDocs && Context . Model . GetLinkRecord ( EdmOperation , CustomLinkRel ) is Link externalDocs )
219272 {
0 commit comments