in schema/v1/inputs.go [75:111]
func (i *Input) verifyDefaultValueMatchesType(protoInput *proto.Spec_Content_Input) error {
if i.Default == nil || protoInput.Default == nil {
return nil
}
if i.Type == nil {
return nil
}
var defaultType InputType
switch *i.Type {
case InputTypeBoolean:
if _, ok := protoInput.Default.Kind.(*structpb.Value_BoolValue); ok {
defaultType = InputTypeBoolean
}
case InputTypeArray:
if _, ok := protoInput.Default.Kind.(*structpb.Value_ListValue); ok {
defaultType = InputTypeArray
}
case InputTypeNumber:
if _, ok := protoInput.Default.Kind.(*structpb.Value_NumberValue); ok {
defaultType = InputTypeNumber
}
case InputTypeString:
if _, ok := protoInput.Default.Kind.(*structpb.Value_StringValue); ok {
defaultType = InputTypeString
}
case InputTypeStruct:
if _, ok := protoInput.Default.Kind.(*structpb.Value_StructValue); ok {
defaultType = InputTypeStruct
}
default:
return fmt.Errorf("unsupported type: %v", i.Type)
}
if defaultType != *i.Type {
return fmt.Errorf("input type %v and default value type %v must match", i.Type, defaultType)
}
return nil
}