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  }