Files
libopenapi/datamodel/high/v2/parameter_definitions.go
Dave Shanley 3d5ecf0efb Refactored version directory names
3.0 and 2.0 do not work, there are multiple versions and anything with a period in it sucks from my point of view, v2 and v3 feel much better from a DX perspective.
2022-09-16 08:33:39 -04:00

43 lines
1.2 KiB
Go

// Copyright 2022 Princess B33f Heavy Industries / Dave Shanley
// SPDX-License-Identifier: MIT
package v2
import low "github.com/pb33f/libopenapi/datamodel/low/v2"
type ParameterDefinitions struct {
Definitions map[string]*Parameter
low *low.ParameterDefinitions
}
func NewParametersDefinitions(parametersDefinitions *low.ParameterDefinitions) *ParameterDefinitions {
pd := new(ParameterDefinitions)
pd.low = parametersDefinitions
params := make(map[string]*Parameter)
var buildParam = func(name string, param *low.Parameter, rChan chan<- asyncResult[*Parameter]) {
rChan <- asyncResult[*Parameter]{
key: name,
result: NewParameter(param),
}
}
resChan := make(chan asyncResult[*Parameter])
for k := range parametersDefinitions.Definitions {
go buildParam(k.Value, parametersDefinitions.Definitions[k].Value, resChan)
}
totalParams := len(parametersDefinitions.Definitions)
completedParams := 0
for completedParams < totalParams {
select {
case r := <-resChan:
completedParams++
params[r.key] = r.result
}
}
pd.Definitions = params
return pd
}
func (p *ParameterDefinitions) GoLow() *low.ParameterDefinitions {
return p.low
}