diff --git a/lagoon/validate.go b/lagoon/validate.go index 7be3597..98d4f01 100644 --- a/lagoon/validate.go +++ b/lagoon/validate.go @@ -85,6 +85,8 @@ func validateField(ctx context.Context, tx *gorm.DB, model any, field, rule stri tags = append(tags, oneofTag(strings.Split(arg, ","))) case "unique": uniqueTable = arg + case "boolean": + // Go's bool field type already enforces this; treat as a type-check no-op. default: return nil, fmt.Errorf("lagoon: unrecognized validation rule %q", tok) } diff --git a/lagoon/validate_test.go b/lagoon/validate_test.go index 9d8b3ee..348d9ab 100644 --- a/lagoon/validate_test.go +++ b/lagoon/validate_test.go @@ -73,6 +73,19 @@ func TestValidateMoneyRange(t *testing.T) { } } +func TestValidateBooleanNoop(t *testing.T) { + rules := map[string]string{"search_use_typesense": "boolean"} + for _, v := range []any{true, false} { + errs, err := Validate(t.Context(), nil, nil, rules, map[string]any{"search_use_typesense": v}, nil) + if err != nil { + t.Fatal(err) + } + if len(errs) != 0 { + t.Fatalf("boolean %v = %v", v, errs) + } + } +} + func TestValidateUnrecognizedRule(t *testing.T) { _, err := Validate(t.Context(), nil, nil, map[string]string{"name": "required|nope"}, map[string]any{"name": "x"}, nil) if err == nil || !strings.Contains(err.Error(), "nope") {