@@ -209,7 +209,6 @@ public async Task<HttpRequestMessage> BuildRequest(IReadOnlyList<FormulaValue> a
209209 public Dictionary < string , FormulaValue > ConvertToNamedParameters ( IReadOnlyList < FormulaValue > args )
210210 {
211211 // First N are required params.
212- // Last param is a record with each field being an optional.
213212 // Parameter names are case sensitive.
214213
215214 Dictionary < string , FormulaValue > map = new ( ) ;
@@ -225,11 +224,12 @@ public Dictionary<string, FormulaValue> ConvertToNamedParameters(IReadOnlyList<F
225224 {
226225 map [ param . Name ] = param . DefaultValue ;
227226 }
227+
228+ var parameters = _function . RequiredParameters . Union ( _function . OptionalParameters ) . ToArray ( ) ;
228229
229- // Required parameters are always first
230- for ( int i = 0 ; i < _function . RequiredParameters . Length ; i ++ )
230+ for ( var i = 0 ; i < args . Count ; i ++ )
231231 {
232- string parameterName = _function . RequiredParameters [ i ] . Name ;
232+ string parameterName = parameters [ i ] . Name ;
233233 FormulaValue paramValue = args [ i ] ;
234234
235235 // Objects are always flattenned
@@ -254,34 +254,6 @@ public Dictionary<string, FormulaValue> ConvertToNamedParameters(IReadOnlyList<F
254254 }
255255 }
256256
257- // Optional parameters are next and stored in a Record
258- if ( _function . OptionalParameters . Length > 0 && args . Count > _function . RequiredParameters . Length )
259- {
260- FormulaValue optionalArg = args [ args . Count - 1 ] ;
261-
262- // Objects are always flattenned
263- if ( optionalArg is RecordValue record )
264- {
265- foreach ( NamedValue field in record . Fields )
266- {
267- if ( map . ContainsKey ( field . Name ) )
268- {
269- // if optional parameters are defined and a default value is already present
270- map [ field . Name ] = field . Value ;
271- }
272- else
273- {
274- map . Add ( field . Name , field . Value ) ;
275- }
276- }
277- }
278- else
279- {
280- // Type check should have caught this.
281- throw new PowerFxConnectorException ( $ "Optional arguments must be the last argument and a record") ;
282- }
283- }
284-
285257 return map ;
286258 }
287259
0 commit comments