github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/graphql/bundle_validation.go (about) 1 package graphql 2 3 import ( 4 "fmt" 5 6 "github.com/kyma-incubator/compass/components/director/pkg/apperrors" 7 8 validation "github.com/go-ozzo/ozzo-validation/v4" 9 "github.com/go-ozzo/ozzo-validation/v4/is" 10 "github.com/kyma-incubator/compass/components/director/pkg/inputvalidation" 11 ) 12 13 // Validate missing godoc 14 func (i BundleCreateInput) Validate() error { 15 return validation.ValidateStruct(&i, 16 validation.Field(&i.Name, validation.Required, is.PrintableASCII, validation.Length(1, 100)), 17 validation.Field(&i.Description, validation.RuneLength(0, descriptionStringLengthLimit)), 18 validation.Field(&i.DefaultInstanceAuth, validation.NilOrNotEmpty), 19 validation.Field(&i.InstanceAuthRequestInputSchema, validation.NilOrNotEmpty), 20 validation.Field(&i.APIDefinitions, inputvalidation.Each(validation.Required)), 21 validation.Field(&i.EventDefinitions, inputvalidation.Each(validation.Required)), 22 validation.Field(&i.Documents, inputvalidation.Each(validation.Required)), 23 ) 24 } 25 26 // Validate missing godoc 27 func (i BundleUpdateInput) Validate() error { 28 return validation.ValidateStruct(&i, 29 validation.Field(&i.Name, validation.Required, is.PrintableASCII, validation.Length(1, 100)), 30 validation.Field(&i.Description, validation.RuneLength(0, descriptionStringLengthLimit)), 31 validation.Field(&i.DefaultInstanceAuth, validation.NilOrNotEmpty), 32 validation.Field(&i.InstanceAuthRequestInputSchema, validation.NilOrNotEmpty), 33 ) 34 } 35 36 // Validate missing godoc 37 func (i BundleInstanceAuthRequestInput) Validate() error { 38 // Validation of inputParams against JSON schema is done in Service 39 return validation.ValidateStruct(&i, 40 validation.Field(&i.ID, is.UUIDv4), 41 validation.Field(&i.Context, validation.NilOrNotEmpty), 42 validation.Field(&i.InputParams, validation.NilOrNotEmpty), 43 ) 44 } 45 46 // Validate missing godoc 47 func (i BundleInstanceAuthSetInput) Validate() error { 48 if i.Auth == nil && i.Status == nil { 49 return apperrors.NewInvalidDataError("at least one field (Auth or Status) has to be provided") 50 } 51 52 if i.Status != nil { 53 if i.Auth != nil && i.Status.Condition != BundleInstanceAuthSetStatusConditionInputSucceeded { 54 return fmt.Errorf("status condition has to be equal to %s when the auth is provided", BundleInstanceAuthSetStatusConditionInputSucceeded) 55 } 56 57 if i.Auth == nil && i.Status.Condition == BundleInstanceAuthSetStatusConditionInputSucceeded { 58 return fmt.Errorf("status cannot be equal to %s when auth is not provided", BundleInstanceAuthSetStatusConditionInputSucceeded) 59 } 60 } 61 62 return validation.ValidateStruct(&i, 63 validation.Field(&i.Status, validation.NilOrNotEmpty), 64 validation.Field(&i.Auth, validation.NilOrNotEmpty), 65 ) 66 } 67 68 // Validate missing godoc 69 func (i BundleInstanceAuthStatusInput) Validate() error { 70 return validation.ValidateStruct(&i, 71 validation.Field(&i.Reason, validation.Required), 72 validation.Field(&i.Message, validation.Required), 73 validation.Field(&i.Condition, validation.Required), 74 ) 75 } 76 77 // Validate validates BundleInstanceAuthCreateInput 78 func (i BundleInstanceAuthCreateInput) Validate() error { 79 if i.Auth == nil { 80 return apperrors.NewInvalidDataError("Auth should be provided") 81 } 82 83 // Exactly one of RuntimeID and RuntimeContextID should be provided 84 if i.RuntimeID == nil && i.RuntimeContextID == nil { 85 return apperrors.NewInvalidDataError("At least one of RuntimeID or RuntimeContextID should be provided") 86 } else if i.RuntimeID != nil && i.RuntimeContextID != nil { 87 return apperrors.NewInvalidDataError("Only one of RuntimeID or RuntimeContextID should be provided") 88 } 89 90 return validation.ValidateStruct(&i, 91 validation.Field(&i.Context, validation.NilOrNotEmpty), 92 validation.Field(&i.InputParams, validation.NilOrNotEmpty), 93 ) 94 }