SpineEventEngine / validation

Apache License 2.0
2 stars 0 forks source link

`same_as` validation option #83

Open alexander-yevsyukov opened 1 year ago

alexander-yevsyukov commented 1 year ago

In some cases, especially when creating entity states, an ID field has a value which equals the value of a field of a nested message.

For example, in ProtoData, ProtobufSourceFile message has the ID field file_path, which has the same value as the path value of the nested File message contained in the file field:

message ProtobufSourceFile {
    option (entity).kind = VIEW;

    // The relative path to the file.
    //
    // Must be the same as `file.path`.
    //
    FilePath file_path = 1;

    File file = 2;
    ...
}

A programmer has to remember this fact, and currently there's no way to guard him against an error. It would be more convenient to have a validation option, which ensures that field values are equal:

message ProtobufSourceFile {
    option (entity).kind = VIEW;

    // The relative path to the file.
    //
    // Must be the same as `file.path`.
    //
    FilePath file_path = 1 [(same_as) = "file.path");

    File file = 2;
    ...