From 7435a4bf6b0a33d4189887a0d8509c28bb94eb5d Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 14 Nov 2023 16:35:40 -0700 Subject: [PATCH] Fix schema issues Signed-off-by: Darren Shepherd --- pkg/apis/internal.acorn.io/v1/schema.go | 5 ++- .../v1/zz_generated.deepcopy.go | 9 +---- pkg/appdefinition/params.go | 35 +++++++++++++------ pkg/openapi/generated/openapi_generated.go | 7 ---- 4 files changed, 27 insertions(+), 29 deletions(-) diff --git a/pkg/apis/internal.acorn.io/v1/schema.go b/pkg/apis/internal.acorn.io/v1/schema.go index 28de79aa3f..351be08f78 100644 --- a/pkg/apis/internal.acorn.io/v1/schema.go +++ b/pkg/apis/internal.acorn.io/v1/schema.go @@ -18,9 +18,8 @@ type FieldType struct { } type Constraint struct { - Op string `json:"op,omitempty"` - Right string `json:"right,omitempty"` - Type *FieldType `json:"type,omitempty"` + Op string `json:"op,omitempty"` + Right string `json:"right,omitempty"` } type Object struct { diff --git a/pkg/apis/internal.acorn.io/v1/zz_generated.deepcopy.go b/pkg/apis/internal.acorn.io/v1/zz_generated.deepcopy.go index af71d008bf..ceaa203ca1 100644 --- a/pkg/apis/internal.acorn.io/v1/zz_generated.deepcopy.go +++ b/pkg/apis/internal.acorn.io/v1/zz_generated.deepcopy.go @@ -1165,11 +1165,6 @@ func (in *Condition) DeepCopy() *Condition { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Constraint) DeepCopyInto(out *Constraint) { *out = *in - if in.Type != nil { - in, out := &in.Type, &out.Type - *out = new(FieldType) - (*in).DeepCopyInto(*out) - } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Constraint. @@ -1835,9 +1830,7 @@ func (in *FieldType) DeepCopyInto(out *FieldType) { if in.Constraints != nil { in, out := &in.Constraints, &out.Constraints *out = make([]Constraint, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + copy(*out, *in) } if in.Alternates != nil { in, out := &in.Alternates, &out.Alternates diff --git a/pkg/appdefinition/params.go b/pkg/appdefinition/params.go index 5cb10e8314..c19eae5860 100644 --- a/pkg/appdefinition/params.go +++ b/pkg/appdefinition/params.go @@ -53,7 +53,7 @@ func fromFields(in []value.ObjectSchemaField) (result []v1.Field) { return } -func anyToString(v any) string { +func getDefault(v any) string { var ( ts *value.TypeSchema ) @@ -66,9 +66,6 @@ func anyToString(v any) string { if v == nil { return "" } - if s, ok := v.(string); ok { - return s - } d, _ := json.Marshal(v) return string(d) } @@ -124,16 +121,22 @@ func fromConstraints(s value.Schema) (result []v1.Constraint) { for _, item := range in { result = append(result, v1.Constraint{ Op: item.Op, - Right: anyToString(item.Right), - Type: anyToFieldType(item.Right), + Right: toString(item.Right), }) } return } -func anyToFieldType(v any) *v1.FieldType { - rt, _ := v.(*v1.FieldType) - return rt +func toString(v any) string { + if v == nil { + return "" + } + ts, ok := v.(*value.TypeSchema) + if ok { + v = fromFieldType(ts) + } + s, _ := json.Marshal(v) + return string(s) } func fromAlternates(s value.Schema) (out []v1.FieldType) { @@ -159,14 +162,24 @@ func fromFieldType(in value.Schema) *v1.FieldType { if in == nil { return nil } - return &v1.FieldType{ + result := &v1.FieldType{ Kind: string(in.TargetKind()), Object: fromObject(in), Array: fromArray(in), Constraints: fromConstraints(in), - Default: anyToString(in), + Default: getDefault(in), Alternates: fromAlternates(in), } + if result.Default == "" { + for _, alt := range result.Alternates { + if alt.Default != "" { + result.Default = alt.Default + break + } + } + } + + return result } func fromField(in value.ObjectSchemaField) v1.Field { diff --git a/pkg/openapi/generated/openapi_generated.go b/pkg/openapi/generated/openapi_generated.go index 3479c4ecaa..a1fd913bad 100644 --- a/pkg/openapi/generated/openapi_generated.go +++ b/pkg/openapi/generated/openapi_generated.go @@ -8102,16 +8102,9 @@ func schema_pkg_apis_internalacornio_v1_Constraint(ref common.ReferenceCallback) Format: "", }, }, - "type": { - SchemaProps: spec.SchemaProps{ - Ref: ref("github.com/acorn-io/runtime/pkg/apis/internal.acorn.io/v1.FieldType"), - }, - }, }, }, }, - Dependencies: []string{ - "github.com/acorn-io/runtime/pkg/apis/internal.acorn.io/v1.FieldType"}, } }