diff --git a/datamodel/low/model_interfaces.go b/datamodel/low/model_interfaces.go index d5054ee..782acb6 100644 --- a/datamodel/low/model_interfaces.go +++ b/datamodel/low/model_interfaces.go @@ -5,15 +5,24 @@ package low type SharedParameters interface { Hash() [32]byte - GetType() *NodeReference[string] + GetName() *NodeReference[string] + GetIn() *NodeReference[string] GetDescription() *NodeReference[string] - GetDeprecated() *NodeReference[bool] + GetAllowEmptyValue() *NodeReference[bool] + GetRequired() *NodeReference[bool] + GetSchema() *NodeReference[any] // requires cast. +} + +type HasDescription interface { + GetDescription() *NodeReference[string] +} + +type SwaggerParameter interface { + SharedParameters + GetType() *NodeReference[string] GetFormat() *NodeReference[string] - GetStyle() *NodeReference[string] GetCollectionFormat() *NodeReference[string] GetDefault() *NodeReference[any] - GetAllowReserved() *NodeReference[bool] - GetExplode() *NodeReference[bool] GetMaximum() *NodeReference[int] GetExclusiveMaximum() *NodeReference[bool] GetMinimum() *NodeReference[int] @@ -26,27 +35,6 @@ type SharedParameters interface { GetUniqueItems() *NodeReference[bool] GetEnum() *NodeReference[[]ValueReference[string]] GetMultipleOf() *NodeReference[int] - GetExample() *NodeReference[any] - GetSchema() *NodeReference[any] // requires cast. - GetExamples() *NodeReference[any] // requires cast - GetContent() *NodeReference[any] // requires cast. - GetItems() *NodeReference[any] // requires cast. -} - -type IsParameter interface { - GetName() *NodeReference[string] - GetIn() *NodeReference[string] - SharedParameterHeader - SharedParameters -} - -type SharedParameterHeader interface { - GetRequired() *NodeReference[bool] - GetAllowEmptyValue() *NodeReference[bool] -} - -type HasDescription interface { - GetDescription() *NodeReference[string] } type SwaggerHeader interface { @@ -82,7 +70,18 @@ type OpenAPIHeader interface { GetRequired() *NodeReference[bool] GetAllowEmptyValue() *NodeReference[bool] GetSchema() *NodeReference[any] // requires cast. - GetExamples() *NodeReference[any] // requires cast + GetExamples() *NodeReference[any] // requires cast. + GetContent() *NodeReference[any] // requires cast. +} + +type OpenAPIParameter interface { + SharedParameters + GetDeprecated() *NodeReference[bool] + GetStyle() *NodeReference[string] + GetAllowReserved() *NodeReference[bool] + GetExplode() *NodeReference[bool] + GetExample() *NodeReference[any] + GetExamples() *NodeReference[any] // requires cast. GetContent() *NodeReference[any] // requires cast. } @@ -92,10 +91,10 @@ type SharedOperations interface { GetDescription() NodeReference[string] GetDeprecated() NodeReference[bool] GetExtensions() map[KeyReference[string]]ValueReference[any] - GetExternalDocs() NodeReference[any] // requires cast - GetResponses() NodeReference[any] // requires cast - GetParameters() NodeReference[any] // requires cast - GetSecurity() NodeReference[any] // requires cast + GetExternalDocs() NodeReference[any] // requires cast. + GetResponses() NodeReference[any] // requires cast. + GetParameters() NodeReference[any] // requires cast. + GetSecurity() NodeReference[any] // requires cast. } type SwaggerOperations interface { @@ -108,5 +107,5 @@ type SwaggerOperations interface { type OpenAPIOperations interface { SharedOperations //GetCallbacks() NodeReference[map[KeyReference[string]]ValueReference[any]] // requires cast - GetServers() NodeReference[any] // requires cast + GetServers() NodeReference[any] // requires cast. } diff --git a/datamodel/low/v2/items.go b/datamodel/low/v2/items.go index d96371b..1778785 100644 --- a/datamodel/low/v2/items.go +++ b/datamodel/low/v2/items.go @@ -150,6 +150,9 @@ func (i *Items) GetItems() *low.NodeReference[any] { func (i *Items) GetCollectionFormat() *low.NodeReference[string] { return &i.CollectionFormat } +func (i *Items) GetDescription() *low.NodeReference[string] { + return nil // not implemented, but required to align with header contract +} func (i *Items) GetDefault() *low.NodeReference[any] { return &i.Default } diff --git a/what-changed/model/parameter.go b/what-changed/model/parameter.go index a0ff12f..8f17df3 100644 --- a/what-changed/model/parameter.go +++ b/what-changed/model/parameter.go @@ -74,7 +74,7 @@ func addPropertyCheck(props *[]*PropertyCheck, }) } -func addOpenAPIParameterProperties(left, right low.IsParameter, changes *[]*Change) []*PropertyCheck { +func addOpenAPIParameterProperties(left, right low.OpenAPIParameter, changes *[]*Change) []*PropertyCheck { var props []*PropertyCheck // style @@ -100,7 +100,7 @@ func addOpenAPIParameterProperties(left, right low.IsParameter, changes *[]*Chan return props } -func addSwaggerParameterProperties(left, right low.IsParameter, changes *[]*Change) []*PropertyCheck { +func addSwaggerParameterProperties(left, right low.SwaggerParameter, changes *[]*Change) []*PropertyCheck { var props []*PropertyCheck // type @@ -166,7 +166,7 @@ func addSwaggerParameterProperties(left, right low.IsParameter, changes *[]*Chan return props } -func addCommonParameterProperties(left, right low.IsParameter, changes *[]*Change) []*PropertyCheck { +func addCommonParameterProperties(left, right low.SharedParameters, changes *[]*Change) []*PropertyCheck { var props []*PropertyCheck addPropertyCheck(&props, left.GetName().ValueNode, right.GetName().ValueNode, diff --git a/what-changed/model/path_item.go b/what-changed/model/path_item.go index 9b70426..94edf3f 100644 --- a/what-changed/model/path_item.go +++ b/what-changed/model/path_item.go @@ -324,18 +324,18 @@ func compareSwaggerPathItem(lPath, rPath *v2.PathItem, changes *[]*Change, pc *P return props } -func extractV2ParametersIntoInterface(l, r []low.ValueReference[*v2.Parameter]) ([]low.ValueReference[low.IsParameter], - []low.ValueReference[low.IsParameter]) { - lp := make([]low.ValueReference[low.IsParameter], len(l)) - rp := make([]low.ValueReference[low.IsParameter], len(r)) +func extractV2ParametersIntoInterface(l, r []low.ValueReference[*v2.Parameter]) ([]low.ValueReference[low.SharedParameters], + []low.ValueReference[low.SharedParameters]) { + lp := make([]low.ValueReference[low.SharedParameters], len(l)) + rp := make([]low.ValueReference[low.SharedParameters], len(r)) for i := range l { - lp[i] = low.ValueReference[low.IsParameter]{ + lp[i] = low.ValueReference[low.SharedParameters]{ Value: l[i].Value, ValueNode: l[i].ValueNode, } } for i := range r { - rp[i] = low.ValueReference[low.IsParameter]{ + rp[i] = low.ValueReference[low.SharedParameters]{ Value: r[i].Value, ValueNode: r[i].ValueNode, } @@ -343,18 +343,18 @@ func extractV2ParametersIntoInterface(l, r []low.ValueReference[*v2.Parameter]) return lp, rp } -func extractV3ParametersIntoInterface(l, r []low.ValueReference[*v3.Parameter]) ([]low.ValueReference[low.IsParameter], - []low.ValueReference[low.IsParameter]) { - lp := make([]low.ValueReference[low.IsParameter], len(l)) - rp := make([]low.ValueReference[low.IsParameter], len(r)) +func extractV3ParametersIntoInterface(l, r []low.ValueReference[*v3.Parameter]) ([]low.ValueReference[low.SharedParameters], + []low.ValueReference[low.SharedParameters]) { + lp := make([]low.ValueReference[low.SharedParameters], len(l)) + rp := make([]low.ValueReference[low.SharedParameters], len(r)) for i := range l { - lp[i] = low.ValueReference[low.IsParameter]{ + lp[i] = low.ValueReference[low.SharedParameters]{ Value: l[i].Value, ValueNode: l[i].ValueNode, } } for i := range r { - rp[i] = low.ValueReference[low.IsParameter]{ + rp[i] = low.ValueReference[low.SharedParameters]{ Value: r[i].Value, ValueNode: r[i].ValueNode, } @@ -362,10 +362,10 @@ func extractV3ParametersIntoInterface(l, r []low.ValueReference[*v3.Parameter]) return lp, rp } -func checkParameters(lParams, rParams []low.ValueReference[low.IsParameter], changes *[]*Change, pc *PathItemChanges) { +func checkParameters(lParams, rParams []low.ValueReference[low.SharedParameters], changes *[]*Change, pc *PathItemChanges) { - lv := make(map[string]low.IsParameter, len(lParams)) - rv := make(map[string]low.IsParameter, len(rParams)) + lv := make(map[string]low.SharedParameters, len(lParams)) + rv := make(map[string]low.SharedParameters, len(rParams)) for i := range lParams { s := lParams[i].Value.GetName().Value