github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/graphql/event_api_validation.go (about) 1 package graphql 2 3 import ( 4 validation "github.com/go-ozzo/ozzo-validation/v4" 5 "github.com/go-ozzo/ozzo-validation/v4/is" 6 "github.com/kyma-incubator/compass/components/director/pkg/inputvalidation" 7 "github.com/pkg/errors" 8 ) 9 10 // Validate missing godoc 11 func (i EventDefinitionInput) Validate() error { 12 return validation.ValidateStruct(&i, 13 validation.Field(&i.Name, validation.Required, is.PrintableASCII, validation.Length(1, 100)), 14 validation.Field(&i.Description, validation.RuneLength(0, descriptionStringLengthLimit)), 15 validation.Field(&i.Spec, validation.NilOrNotEmpty), 16 validation.Field(&i.Group, validation.RuneLength(0, groupLengthLimit)), 17 validation.Field(&i.Version, validation.NilOrNotEmpty), 18 ) 19 } 20 21 // Validate missing godoc 22 func (i EventSpecInput) Validate() error { 23 return validation.Errors{ 24 "Rule.Type": validation.Validate(&i.Type, validation.Required, validation.In(EventSpecTypeAsyncAPI)), 25 "Rule.Format": validation.Validate(&i.Format, validation.Required, validation.In(SpecFormatYaml, SpecFormatJSON)), 26 "Rule.MatchingTypeAndFormat": i.validateTypeWithMatchingSpecFormat(), 27 "Rule.FetchRequest": validation.Validate(&i.FetchRequest), 28 "Rule.DataOrFetchRequest": inputvalidation.ValidateExactlyOneNotNil("Only one of Data or Fetch Request must be passed", i.Data, i.FetchRequest), 29 }.Filter() 30 } 31 32 func (i EventSpecInput) validateTypeWithMatchingSpecFormat() error { 33 switch i.Type { 34 case EventSpecTypeAsyncAPI: 35 if !i.Format.isOneOf([]SpecFormat{SpecFormatYaml, SpecFormatJSON}) { 36 return errors.Errorf("format %s is not a valid spec format for spec type %s", i.Format, i.Type) 37 } 38 default: 39 return errors.Errorf("%s is an invalid spec type", i.Type) 40 } 41 return nil 42 }