MCPcopy Index your code
hub / github.com/oapi-codegen/oapi-codegen / CombineOperationParameters

Function CombineOperationParameters

pkg/codegen/operations.go:1376–1403  ·  view source on GitHub ↗

CombineOperationParameters combines the Parameters defined at a global level (Parameters defined for all methods on a given path) with the Parameters defined at a local level (Parameters defined for a specific path), preferring the locally defined parameter over the global one

(globalParams []ParameterDefinition, localParams []ParameterDefinition)

Source from the content-addressed store, hash-verified

1374
1375// CombineOperationParameters combines the Parameters defined at a global level (Parameters defined for all methods on a given path) with the Parameters defined at a local level (Parameters defined for a specific path), preferring the locally defined parameter over the global one
1376func CombineOperationParameters(globalParams []ParameterDefinition, localParams []ParameterDefinition) ([]ParameterDefinition, error) {
1377 allParams := make([]ParameterDefinition, 0, len(globalParams)+len(localParams))
1378 dupCheck := make(map[string]map[string]string)
1379 for _, p := range localParams {
1380 if dupCheck[p.In] == nil {
1381 dupCheck[p.In] = make(map[string]string)
1382 }
1383 if _, exist := dupCheck[p.In][p.ParamName]; !exist {
1384 dupCheck[p.In][p.ParamName] = "local"
1385 allParams = append(allParams, p)
1386 } else {
1387 return nil, fmt.Errorf("duplicate local parameter %s/%s", p.In, p.ParamName)
1388 }
1389 }
1390 for _, p := range globalParams {
1391 if dupCheck[p.In] == nil {
1392 dupCheck[p.In] = make(map[string]string)
1393 }
1394 if t, exist := dupCheck[p.In][p.ParamName]; !exist {
1395 dupCheck[p.In][p.ParamName] = "global"
1396 allParams = append(allParams, p)
1397 } else if t == "global" {
1398 return nil, fmt.Errorf("duplicate global parameter %s/%s", p.In, p.ParamName)
1399 }
1400 }
1401
1402 return allParams, nil
1403}

Callers 1

OperationDefinitionsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected