Skip to content

[Question] Does Apache Fory support field validation inside *.fdl? #3904

Description

@tempcomp123456789

Question

Hi.

Does Apache Fory support field validation inside *.fdl , similar to Protobuf tools (Protovalidate (CEL)/protoc-gen-validate (PGV))

https://fory.apache.org/docs/compiler/protobuf_idl_support/

syntax = "proto3";

package v1.user;

import "buf/validate/validate.proto";

message UserProfile {
  string id = 1 [(buf.validate.field).string.uuid = true];

  // Numeric boundaries
  uint32 age = 2 [(buf.validate.field).uint32.gte = 18, (buf.validate.field).uint32.lte = 120];

  string email = 3 [(buf.validate.field).string.email = true];

  // Length constraints and regex pattern matching
  string username = 4 [
    (buf.validate.field).string.min_len = 3,
    (buf.validate.field).string.max_len = 30,
    (buf.validate.field).string.pattern = "^[a-zA-Z0-9_]+$"
  ];

  // Collection constraint (ensure list contains at least one item)
  repeated string roles = 5 [(buf.validate.field).repeated.min_items = 1];

  // Standard rules handle simple single-field checks.
  uint64 amount = 6 [(buf.validate.field).uint64.gt = 0];
  uint64 balance = 7;

  // CEL produces a dynamic error message with runtime values.
  option (buf.validate.message).cel = {
    id: "transfer.sufficient_balance"
    expression:
      "this.amount <= this.balance ? ''"
      ": 'cannot transfer ' + string(this.amount)"
      "  + ' with a balance of ' + string(this.balance)"
  };
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueGood for newcomersquestionFurther information is requested

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions