diff --git a/proto/sagittarius/datatype.proto b/proto/sagittarius/datatype.proto new file mode 100644 index 0000000..ecab9ee --- /dev/null +++ b/proto/sagittarius/datatype.proto @@ -0,0 +1,53 @@ +syntax = "proto3"; +import "translations.proto"; +import "google/protobuf/any.proto"; + +option ruby_package = "Tucana::Sagittarius"; + +package sagittarius; + +message DataType { + enum Variant { + UNKNOWN = 0; + PRIMITIVE = 1; + TYPE = 2; + OBJECT = 3; + DATATYPE = 4; + ARRAY = 5; + GENERIC = 6; + FUNCTION = 7; + } + + shared.Translation name = 1; + Variant variant = 2; + repeated DataTypeRule rules = 3; + repeated DataType input_types = 4; + optional DataType return_type = 5; + optional DataType parent_type = 6; +} + +message DataTypeRule { + enum Variant { + UNKNOWN = 0; + REGEX = 1; + NUMBER_RANGE = 2; + ITEM_OF_COLLECTION = 3; + CONTAINS_TYPE = 4; + CONTAINS_KEY = 5; + } + + Variant variant = 1; + map config = 2; +} + +message DataTypeUpdateRequest { + repeated DataType data_types = 1; +} + +message DataTypeUpdateResponse { + bool success = 1; +} + +service DataTypeService { + rpc Update(DataTypeUpdateRequest) returns (DataTypeUpdateResponse) {} +} diff --git a/proto/shared/translations.proto b/proto/shared/translations.proto new file mode 100644 index 0000000..11daf6c --- /dev/null +++ b/proto/shared/translations.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +option ruby_package = "Tucana::Shared"; + +package shared; + +message Translation { + string code = 1; + string text = 2; +}