syntax = "proto3";
package vortex.expr;
import "scalar.proto";
option java_package = "dev.vortex.proto";
option java_outer_classname = "ExprProtos";
message Expr {
string id = 1;
repeated Expr children = 2;
// See warning message below.
Kind kind = 3;
}
message Kind {
// This enum is very unstable, and will likely be replaced with something more extensible.
oneof kind {
Literal literal = 1;
BinaryOp binary_op = 2;
GetItem get_item = 3;
Identity identity = 4;
Merge merge = 5;
Not not = 6;
Pack pack = 7;
Between between = 8;
Like like = 9;
}
message Literal {
vortex.scalar.Scalar value = 1;
}
message Not {
}
message Identity {
}
message Merge {
}
message Pack {
repeated string paths = 1;
}
message GetItem {
string path = 1;
}
enum BinaryOp {
Eq = 0;
NotEq = 1;
Gt = 2;
Gte = 3;
Lt = 4;
Lte = 5;
And = 6;
Or = 7;
}
message Between {
bool lower_strict = 1;
bool upper_strict = 2;
}
message Like {
bool negated = 1;
bool case_insensitive = 2;
}
}