diff --git a/grpc/java/BUILD b/grpc/java/BUILD index bce07da..52ffe6b 100644 --- a/grpc/java/BUILD +++ b/grpc/java/BUILD @@ -9,20 +9,24 @@ load("@rules_proto_grpc//java:defs.bzl", "java_grpc_library") java_grpc_library( name = "typedb-protocol", protos = [ - "//proto:typedb-service", - "//proto:server-proto", - "//proto:user-proto", - "//proto:database-proto", - "//proto:migration-proto", - "//proto:error-proto", - "//proto:answer-proto", - "//proto:concept-proto", - "//proto:connection-proto", - "//proto:authentication-proto", - "//proto:options-proto", - "//proto:query-proto", - "//proto:transaction-proto", "//proto:version-proto", + "//proto/raft_service:raft-service", + "//proto/raft_service:replication-proto", + "//proto/typedb_clustering_service:typedb-clustering-service", + "//proto/typedb_clustering_service:typedb-clustering-proto", + "//proto/typedb_service:answer-proto", + "//proto/typedb_service:authentication-proto", + "//proto/typedb_service:concept-proto", + "//proto/typedb_service:connection-proto", + "//proto/typedb_service:database-proto", + "//proto/typedb_service:error-proto", + "//proto/typedb_service:migration-proto", + "//proto/typedb_service:options-proto", + "//proto/typedb_service:query-proto", + "//proto/typedb_service:server-proto", + "//proto/typedb_service:transaction-proto", + "//proto/typedb_service:typedb-service", + "//proto/typedb_service:user-proto", ], # TypeDB Core bundles JARs by maven coordinate, we can remove this when Core is rewritten in Rust tags = ["maven_coordinates=com.typedb:typedb-protocol:{pom_version}"], diff --git a/grpc/nodejs/BUILD b/grpc/nodejs/BUILD index 75a7495..9814648 100644 --- a/grpc/nodejs/BUILD +++ b/grpc/nodejs/BUILD @@ -25,20 +25,24 @@ protoc_gen_ts_bin.protoc_gen_ts_binary( ts_grpc_compile( name = "typedb-protocol-src", deps = [ - "//proto:typedb-service", - "//proto:server-proto", - "//proto:user-proto", - "//proto:database-proto", - "//proto:migration-proto", - "//proto:error-proto", - "//proto:answer-proto", - "//proto:concept-proto", - "//proto:connection-proto", - "//proto:authentication-proto", - "//proto:options-proto", - "//proto:query-proto", - "//proto:transaction-proto", "//proto:version-proto", + "//proto/raft_service:raft-service", + "//proto/raft_service:replication-proto", + "//proto/typedb_clustering_service:typedb-clustering-service", + "//proto/typedb_clustering_service:typedb-clustering-proto", + "//proto/typedb_service:answer-proto", + "//proto/typedb_service:authentication-proto", + "//proto/typedb_service:concept-proto", + "//proto/typedb_service:connection-proto", + "//proto/typedb_service:database-proto", + "//proto/typedb_service:error-proto", + "//proto/typedb_service:migration-proto", + "//proto/typedb_service:options-proto", + "//proto/typedb_service:query-proto", + "//proto/typedb_service:server-proto", + "//proto/typedb_service:transaction-proto", + "//proto/typedb_service:typedb-service", + "//proto/typedb_service:user-proto", ] ) diff --git a/grpc/rust/BUILD b/grpc/rust/BUILD index 4384f57..7abd941 100644 --- a/grpc/rust/BUILD +++ b/grpc/rust/BUILD @@ -11,22 +11,24 @@ load("@typedb_dependencies//builder/proto_grpc/rust:compile.bzl", "rust_tonic_co rust_tonic_compile( name = "typedb_protocol_src", srcs = [ - "//proto:answer-proto", - "//proto:authentication-proto", - "//proto:concept-proto", - "//proto:connection-proto", - "//proto:database-proto", - "//proto:error-proto", - "//proto:migration-proto", - "//proto:options-proto", - "//proto:query-proto", - "//proto:raft-peering-proto", - "//proto:raft-peering-service", - "//proto:server-proto", - "//proto:transaction-proto", - "//proto:typedb-service", - "//proto:user-proto", "//proto:version-proto", + "//proto/raft_service:raft-service", + "//proto/raft_service:replication-proto", + "//proto/typedb_clustering_service:typedb-clustering-service", + "//proto/typedb_clustering_service:typedb-clustering-proto", + "//proto/typedb_service:answer-proto", + "//proto/typedb_service:authentication-proto", + "//proto/typedb_service:concept-proto", + "//proto/typedb_service:connection-proto", + "//proto/typedb_service:database-proto", + "//proto/typedb_service:error-proto", + "//proto/typedb_service:migration-proto", + "//proto/typedb_service:options-proto", + "//proto/typedb_service:query-proto", + "//proto/typedb_service:server-proto", + "//proto/typedb_service:transaction-proto", + "//proto/typedb_service:typedb-service", + "//proto/typedb_service:user-proto", ], packages = ["typedb.protocol"], ) diff --git a/grpc/rust/build.rs b/grpc/rust/build.rs index 304f2c5..4d3e8ee 100644 --- a/grpc/rust/build.rs +++ b/grpc/rust/build.rs @@ -4,22 +4,24 @@ fn main() -> std::io::Result<()> { let protos = vec![ - "../../proto/answer.proto", - "../../proto/authentication.proto", - "../../proto/concept.proto", - "../../proto/connection.proto", - "../../proto/database.proto", - "../../proto/error.proto", - "../../proto/migration.proto", - "../../proto/options.proto", - "../../proto/query.proto", - "../../proto/server.proto", - "../../proto/transaction.proto", - "../../proto/typedb-service.proto", - "../../proto/user.proto", + "../../proto/raft_service/replication.proto", + "../../proto/raft_service/raft_service.proto", + "../../proto/typedb_service/answer.proto", + "../../proto/typedb_service/authentication.proto", + "../../proto/typedb_service/concept.proto", + "../../proto/typedb_service/connection.proto", + "../../proto/typedb_service/database.proto", + "../../proto/typedb_service/error.proto", + "../../proto/typedb_service/migration.proto", + "../../proto/typedb_service/options.proto", + "../../proto/typedb_service/query.proto", + "../../proto/typedb_service/server.proto", + "../../proto/typedb_service/transaction.proto", + "../../proto/typedb_service/typedb_service.proto", + "../../proto/typedb_service/user.proto", + "../../proto/typedb_clustering_service/typedb_clustering.proto", + "../../proto/typedb_clustering_service/typedb_clustering_service.proto", "../../proto/version.proto", - "../../proto/raft-peering.proto", - "../../proto/raft-peering-service.proto", ]; tonic_build::configure() diff --git a/proto/BUILD b/proto/BUILD index 8669204..97cb933 100644 --- a/proto/BUILD +++ b/proto/BUILD @@ -6,120 +6,6 @@ package(default_visibility = ["//visibility:public"]) load("@typedb_dependencies//tool/checkstyle:rules.bzl", "checkstyle_test") -proto_library( - name = "raft-peering-service", - srcs = [":raft-peering-service.proto"], - deps = [ - ":raft-peering-proto", - ], -) - -proto_library( - name = "typedb-service", - srcs = [":typedb-service.proto"], - deps = [ - ":authentication-proto", - ":connection-proto", - ":database-proto", - ":migration-proto", - ":server-proto", - ":transaction-proto", - ":user-proto", - ], -) - -proto_library( - name = "raft-peering-proto", - srcs = [":raft-peering.proto"], - deps = [ - ":server-proto", - ], -) - -proto_library( - name = "server-proto", - srcs = [":server.proto"], -) - -proto_library( - name = "database-proto", - srcs = [":database.proto"], - deps = [ - ":migration-proto", - ], -) - -proto_library( - name = "migration-proto", - srcs = [":migration.proto"], - deps = [":concept-proto"], -) - -proto_library( - name = "user-proto", - srcs = [":user.proto"], -) - -proto_library( - name = "answer-proto", - srcs = ["answer.proto"], - deps = [":concept-proto"], -) - -proto_library( - name = "authentication-proto", - srcs = ["authentication.proto"], -) - -proto_library( - name = "concept-proto", - srcs = ["concept.proto"], -) - -proto_library( - name = "connection-proto", - srcs = ["connection.proto"], - deps = [ - ":authentication-proto", - ":database-proto", - ":server-proto", - ":version-proto", - ], -) - -proto_library( - name = "options-proto", - srcs = ["options.proto"], -) - -proto_library( - name = "query-proto", - srcs = ["query.proto"], - deps = [ - ":answer-proto", - ":concept-proto", - ":error-proto", - ":options-proto", - ], -) - -proto_library( - name = "error-proto", - srcs = ["error.proto"], -) - -proto_library( - name = "transaction-proto", - srcs = ["transaction.proto"], - deps = [ - ":answer-proto", - ":concept-proto", - ":error-proto", - ":options-proto", - ":query-proto", - ], -) - proto_library( name = "version-proto", srcs = ["version.proto"], @@ -131,12 +17,12 @@ proto_library( filegroup( name = "proto-raw-buffers", srcs = [ - "answer.proto", - "concept.proto", - "connection.proto", - "options.proto", - "query.proto", - "transaction.proto", + "//proto/typedb_service:answer.proto", + "//proto/typedb_service:concept.proto", + "//proto/typedb_service:connection.proto", + "//proto/typedb_service:options.proto", + "//proto/typedb_service:query.proto", + "//proto/typedb_service:transaction.proto", "version.proto", ], ) diff --git a/proto/raft_service/BUILD b/proto/raft_service/BUILD new file mode 100644 index 0000000..62000b0 --- /dev/null +++ b/proto/raft_service/BUILD @@ -0,0 +1,28 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. + +package(default_visibility = ["//visibility:public"]) + +load("@typedb_dependencies//tool/checkstyle:rules.bzl", "checkstyle_test") + +proto_library( + name = "raft-service", + srcs = ["raft_service.proto"], + deps = [ + ":replication-proto", + ], +) + +proto_library( + name = "replication-proto", + srcs = ["replication.proto"], + deps = [], +) + +checkstyle_test( + name = "checkstyle", + size = "small", + include = glob(["*"]), + license_type = "mpl-header", +) diff --git a/proto/raft_service/raft_service.proto b/proto/raft_service/raft_service.proto new file mode 100644 index 0000000..51886f2 --- /dev/null +++ b/proto/raft_service/raft_service.proto @@ -0,0 +1,14 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +syntax = "proto3"; + +import "proto/raft_service/replication.proto"; + +package typedb.protocol; + +// TODO: If the protocol is exposed, maybe it's actually `TypeDBRaft`? +service Raft { + rpc replication (Replication.Req) returns (Replication.Res); +} diff --git a/proto/raft-peering.proto b/proto/raft_service/replication.proto similarity index 61% rename from proto/raft-peering.proto rename to proto/raft_service/replication.proto index cc6411e..7d9dc92 100644 --- a/proto/raft-peering.proto +++ b/proto/raft_service/replication.proto @@ -6,10 +6,7 @@ syntax = "proto3"; package typedb.protocol; -import "proto/server.proto"; - -// TODO: Rename to Replication -message Peering { +message Replication { message Req { uint64 from_id = 1; string from_address = 2; @@ -18,12 +15,3 @@ message Peering { message Res {} } - -message ServerStatus { - message Req {} - - message Res { - string connection_address = 1; - Server.ReplicaStatus replica_status = 2; - } -} diff --git a/proto/typedb_clustering_service/BUILD b/proto/typedb_clustering_service/BUILD new file mode 100644 index 0000000..4a5caf0 --- /dev/null +++ b/proto/typedb_clustering_service/BUILD @@ -0,0 +1,30 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. + +package(default_visibility = ["//visibility:public"]) + +load("@typedb_dependencies//tool/checkstyle:rules.bzl", "checkstyle_test") + +proto_library( + name = "typedb-clustering-service", + srcs = ["typedb_clustering_service.proto"], + deps = [ + ":typedb-clustering-proto", + ], +) + +proto_library( + name = "typedb-clustering-proto", + srcs = ["typedb_clustering.proto"], + deps = [ + "//proto/typedb_service:server-proto", + ], +) + +checkstyle_test( + name = "checkstyle", + size = "small", + include = glob(["*"]), + license_type = "mpl-header", +) diff --git a/proto/typedb_clustering_service/typedb_clustering.proto b/proto/typedb_clustering_service/typedb_clustering.proto new file mode 100644 index 0000000..74ab151 --- /dev/null +++ b/proto/typedb_clustering_service/typedb_clustering.proto @@ -0,0 +1,25 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +syntax = "proto3"; + +package typedb.protocol; + +import "proto/typedb_service/server.proto"; + +message CanRegister { + message Req { + uint64 replica_id = 1; + } + + message Res {} +} + +message ServerStatus { + message Req {} + + message Res { + Server server = 1; + } +} diff --git a/proto/raft-peering-service.proto b/proto/typedb_clustering_service/typedb_clustering_service.proto similarity index 66% rename from proto/raft-peering-service.proto rename to proto/typedb_clustering_service/typedb_clustering_service.proto index 82301fd..cc83c61 100644 --- a/proto/raft-peering-service.proto +++ b/proto/typedb_clustering_service/typedb_clustering_service.proto @@ -4,11 +4,11 @@ syntax = "proto3"; -import "proto/raft-peering.proto"; +import "proto/typedb_clustering_service/typedb_clustering.proto"; package typedb.protocol; -service RaftPeering { - rpc peering (Peering.Req) returns (Peering.Res); +service TypeDBClustering { + rpc can_register (CanRegister.Req) returns (CanRegister.Res); rpc server_status (ServerStatus.Req) returns (ServerStatus.Res); -} \ No newline at end of file +} diff --git a/proto/typedb_service/BUILD b/proto/typedb_service/BUILD new file mode 100644 index 0000000..ae0ed66 --- /dev/null +++ b/proto/typedb_service/BUILD @@ -0,0 +1,112 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. + +package(default_visibility = ["//visibility:public"]) + +load("@typedb_dependencies//tool/checkstyle:rules.bzl", "checkstyle_test") + +proto_library( + name = "typedb-service", + srcs = ["typedb_service.proto"], + deps = [ + ":authentication-proto", + ":connection-proto", + ":database-proto", + ":migration-proto", + ":server-proto", + ":transaction-proto", + ":user-proto", + ], +) + +proto_library( + name = "server-proto", + srcs = ["server.proto"], +) + +proto_library( + name = "database-proto", + srcs = ["database.proto"], + deps = [ + ":migration-proto", + ], +) + +proto_library( + name = "migration-proto", + srcs = ["migration.proto"], + deps = [":concept-proto"], +) + +proto_library( + name = "user-proto", + srcs = ["user.proto"], +) + +proto_library( + name = "answer-proto", + srcs = ["answer.proto"], + deps = [":concept-proto"], +) + +proto_library( + name = "authentication-proto", + srcs = ["authentication.proto"], +) + +proto_library( + name = "concept-proto", + srcs = ["concept.proto"], +) + +proto_library( + name = "connection-proto", + srcs = ["connection.proto"], + deps = [ + ":authentication-proto", + ":database-proto", + ":server-proto", + "//proto:version-proto", + ], +) + +proto_library( + name = "options-proto", + srcs = ["options.proto"], +) + +proto_library( + name = "query-proto", + srcs = ["query.proto"], + deps = [ + ":answer-proto", + ":concept-proto", + ":error-proto", + ":options-proto", + ], +) + +proto_library( + name = "error-proto", + srcs = ["error.proto"], +) + +proto_library( + name = "transaction-proto", + srcs = ["transaction.proto"], + deps = [ + ":answer-proto", + ":concept-proto", + ":error-proto", + ":options-proto", + ":query-proto", + ], +) + +checkstyle_test( + name = "checkstyle", + size = "small", + include = glob(["*"]), + license_type = "mpl-header", +) diff --git a/proto/answer.proto b/proto/typedb_service/answer.proto similarity index 97% rename from proto/answer.proto rename to proto/typedb_service/answer.proto index e6bf5a9..8b28137 100644 --- a/proto/answer.proto +++ b/proto/typedb_service/answer.proto @@ -4,7 +4,7 @@ syntax = "proto3"; -import "proto/concept.proto"; +import "proto/typedb_service/concept.proto"; package typedb.protocol; diff --git a/proto/authentication.proto b/proto/typedb_service/authentication.proto similarity index 100% rename from proto/authentication.proto rename to proto/typedb_service/authentication.proto diff --git a/proto/concept.proto b/proto/typedb_service/concept.proto similarity index 100% rename from proto/concept.proto rename to proto/typedb_service/concept.proto diff --git a/proto/connection.proto b/proto/typedb_service/connection.proto similarity index 84% rename from proto/connection.proto rename to proto/typedb_service/connection.proto index 2e22d65..3257013 100644 --- a/proto/connection.proto +++ b/proto/typedb_service/connection.proto @@ -4,9 +4,9 @@ syntax = "proto3"; -import "proto/authentication.proto"; -import "proto/database.proto"; -import "proto/server.proto"; +import "proto/typedb_service/authentication.proto"; +import "proto/typedb_service/database.proto"; +import "proto/typedb_service/server.proto"; import "proto/version.proto"; package typedb.protocol; diff --git a/proto/database.proto b/proto/typedb_service/database.proto similarity index 97% rename from proto/database.proto rename to proto/typedb_service/database.proto index 4694092..e3a2ca0 100644 --- a/proto/database.proto +++ b/proto/typedb_service/database.proto @@ -6,7 +6,7 @@ syntax = "proto3"; package typedb.protocol; -import "proto/migration.proto"; +import "proto/typedb_service/migration.proto"; message DatabaseManager { diff --git a/proto/error.proto b/proto/typedb_service/error.proto similarity index 100% rename from proto/error.proto rename to proto/typedb_service/error.proto diff --git a/proto/migration.proto b/proto/typedb_service/migration.proto similarity index 98% rename from proto/migration.proto rename to proto/typedb_service/migration.proto index 46ec24c..ba82617 100644 --- a/proto/migration.proto +++ b/proto/typedb_service/migration.proto @@ -6,7 +6,7 @@ syntax = "proto3"; package typedb.protocol; -import "proto/concept.proto"; +import "proto/typedb_service/concept.proto"; message Migration { message Export { diff --git a/proto/options.proto b/proto/typedb_service/options.proto similarity index 100% rename from proto/options.proto rename to proto/typedb_service/options.proto diff --git a/proto/query.proto b/proto/typedb_service/query.proto similarity index 93% rename from proto/query.proto rename to proto/typedb_service/query.proto index efb9940..77790df 100644 --- a/proto/query.proto +++ b/proto/typedb_service/query.proto @@ -4,9 +4,9 @@ syntax = "proto3"; -import "proto/answer.proto"; -import "proto/options.proto"; -import "proto/error.proto"; +import "proto/typedb_service/answer.proto"; +import "proto/typedb_service/options.proto"; +import "proto/typedb_service/error.proto"; package typedb.protocol; diff --git a/proto/server.proto b/proto/typedb_service/server.proto similarity index 91% rename from proto/server.proto rename to proto/typedb_service/server.proto index e29d01e..695a409 100644 --- a/proto/server.proto +++ b/proto/typedb_service/server.proto @@ -14,6 +14,13 @@ message ServerManager { } } + message Get { + message Req {} + message Res { + Server server = 1; + } + } + message Register { message Req { uint64 replica_id = 1; diff --git a/proto/transaction.proto b/proto/typedb_service/transaction.proto similarity index 94% rename from proto/transaction.proto rename to proto/typedb_service/transaction.proto index 4d37f23..ce1bdd6 100644 --- a/proto/transaction.proto +++ b/proto/typedb_service/transaction.proto @@ -4,9 +4,9 @@ syntax = "proto3"; -import "proto/error.proto"; -import "proto/options.proto"; -import "proto/query.proto"; +import "proto/typedb_service/error.proto"; +import "proto/typedb_service/options.proto"; +import "proto/typedb_service/query.proto"; package typedb.protocol; diff --git a/proto/typedb-service.proto b/proto/typedb_service/typedb_service.proto similarity index 86% rename from proto/typedb-service.proto rename to proto/typedb_service/typedb_service.proto index 3b401c7..03d6648 100644 --- a/proto/typedb-service.proto +++ b/proto/typedb_service/typedb_service.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -import "proto/authentication.proto"; -import "proto/connection.proto"; -import "proto/database.proto"; -import "proto/server.proto"; -import "proto/user.proto"; -import "proto/transaction.proto"; -import "proto/migration.proto"; +import "proto/typedb_service/authentication.proto"; +import "proto/typedb_service/connection.proto"; +import "proto/typedb_service/database.proto"; +import "proto/typedb_service/server.proto"; +import "proto/typedb_service/user.proto"; +import "proto/typedb_service/transaction.proto"; +import "proto/typedb_service/migration.proto"; package typedb.protocol; @@ -24,6 +24,7 @@ service TypeDB { // Server Manager API rpc servers_all (ServerManager.All.Req) returns (ServerManager.All.Res); + rpc servers_get (ServerManager.Get.Req) returns (ServerManager.Get.Res); rpc servers_register(ServerManager.Register.Req) returns (ServerManager.Register.Res); rpc servers_deregister(ServerManager.Deregister.Req) returns (ServerManager.Deregister.Res); diff --git a/proto/user.proto b/proto/typedb_service/user.proto similarity index 100% rename from proto/user.proto rename to proto/typedb_service/user.proto