Skip to content

Commit 4b3354f

Browse files
Unify TypeDB network API & simplify Concept requests (#187)
## What is the goal of this PR? We merge core and cluster gRPC service definitions in order to unify the network interface between the two. As part of this change, we simplify Concept API by merging related requests. ## What are the changes implemented in this PR? ### Build * migrate to proto3, which allows the use of `optional` in protocol definitions; * remove nodejs and python protobuf rules — gRPC API will be provided by Rust bindings; ### gRPC Services * merge core and cluster services and structures into one to unify the API; ### Requests * merge concept requests where possible by adding arguments (e.g. `GetOwns`, `GetOwnsExplicit`, and `GetOwnsKey` become `GetOwns` with `transitivity` and `annotations` as parameters); * introduce the `Transitivity` enum and the `RolePlayer` message as part of request restructure.
1 parent 75c64e0 commit 4b3354f

35 files changed

+1665
-2295
lines changed

.bazelrc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
# along with this program. If not, see <https://www.gnu.org/licenses/>.
1616
#
1717

18-
build --incompatible_strict_action_env --java_language_version=11 --javacopt='--release 11'
19-
run --incompatible_strict_action_env
20-
test --incompatible_strict_action_env
18+
try-import ./.bazel-remote-cache.rc
2119

22-
# try-import /opt/credentials/bazel-remote-cache.rc
20+
build --incompatible_strict_action_env --java_language_version=11 --javacopt='--release 11' --enable_runfiles
21+
run --incompatible_strict_action_env --java_runtime_version=remotejdk_11
22+
test --incompatible_strict_action_env --test_env=PATH --cache_test_results=no --java_runtime_version=remotejdk_11

.bazelversion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5.1.1
1+
6.2.0

.factory/automation.yml

Lines changed: 9 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,15 @@ build:
4747
dependencies/maven/update.sh
4848
git diff --exit-code dependencies/maven/artifacts.snapshot
4949
bazel run @vaticle_dependencies//tool/unuseddeps:unused-deps -- list
50-
deploy-maven-snapshot:
50+
deploy-crate-snapshot:
5151
filter:
5252
owner: vaticle
5353
branch: master
5454
image: vaticle-ubuntu-22.04
55-
dependencies: [build, build-dependency]
5655
command: |
57-
export DEPLOY_MAVEN_USERNAME=$REPO_VATICLE_USERNAME
58-
export DEPLOY_MAVEN_PASSWORD=$REPO_VATICLE_PASSWORD
59-
bazel run --define version=$(git rev-parse HEAD) //grpc/java:deploy-maven -- snapshot
56+
export DEPLOY_CRATE_TOKEN=$REPO_VATICLE_CRATES_TOKEN
57+
bazel run --define version=$(git rev-parse HEAD) //grpc/rust:deploy_crate -- snapshot
58+
dependencies: [build, build-dependency]
6059
deploy-npm-snapshot:
6160
filter:
6261
owner: vaticle
@@ -66,33 +65,6 @@ build:
6665
export DEPLOY_NPM_USERNAME=$REPO_VATICLE_USERNAME
6766
export DEPLOY_NPM_PASSWORD=$REPO_VATICLE_PASSWORD
6867
bazel run --define version=$(git rev-parse HEAD) //grpc/nodejs:deploy-npm -- snapshot
69-
dependencies: [build, build-dependency]
70-
deploy-pip-snapshot:
71-
filter:
72-
owner: vaticle
73-
branch: master
74-
image: vaticle-ubuntu-22.04
75-
type: foreground
76-
command: |
77-
export PYENV_ROOT="/opt/pyenv"
78-
pyenv install 3.7.9
79-
pyenv global 3.7.9
80-
sudo unlink /usr/bin/python3
81-
sudo ln -s $(which python3) /usr/bin/python3
82-
sudo ln -s /usr/share/pyshared/lsb_release.py /opt/pyenv/versions/3.7.9/lib/python3.7/site-packages/lsb_release.py
83-
export DEPLOY_PIP_USERNAME=$REPO_VATICLE_USERNAME
84-
export DEPLOY_PIP_PASSWORD=$REPO_VATICLE_PASSWORD
85-
bazel run --define version=$(git rev-parse HEAD) //grpc/python:deploy-pip -- snapshot
86-
dependencies: [build, build-dependency]
87-
deploy-crate-snapshot:
88-
filter:
89-
owner: vaticle
90-
branch: master
91-
image: vaticle-ubuntu-22.04
92-
command: |
93-
export DEPLOY_CRATE_TOKEN=$REPO_VATICLE_CRATES_TOKEN
94-
bazel run --define version=$(git rev-parse HEAD) //grpc/rust:deploy_crate -- snapshot
95-
dependencies: [build, build-dependency]
9668
9769
release:
9870
filter:
@@ -117,39 +89,19 @@ release:
11789
python3 -m pip install certifi
11890
export DEPLOY_GITHUB_TOKEN=$REPO_GITHUB_TOKEN
11991
bazel run --define version=$(cat VERSION) //:deploy-github -- $FACTORY_COMMIT
120-
deploy-maven-release:
92+
deploy-crate-release:
12193
image: vaticle-ubuntu-22.04
122-
command: |
123-
export DEPLOY_MAVEN_USERNAME=$REPO_VATICLE_USERNAME
124-
export DEPLOY_MAVEN_PASSWORD=$REPO_VATICLE_PASSWORD
125-
bazel run --define version=$(cat VERSION) //grpc/java:deploy-maven -- release
12694
dependencies: [deploy-github]
95+
command: |
96+
export DEPLOY_CRATE_TOKEN=$REPO_CRATES_TOKEN
97+
bazel run --define version=$(cat VERSION) //grpc/rust:deploy_crate -- release
12798
deploy-npm-release:
12899
image: vaticle-ubuntu-22.04
100+
dependencies: [deploy-github]
129101
command: |
130102
wget -q -O - https://cli-assets.heroku.com/apt/release.key | sudo apt-key add -
131103
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
132104
sudo apt update -y
133105
sudo apt install -y expect
134106
export DEPLOY_NPM_TOKEN=$REPO_NPM_TOKEN
135107
bazel run --define version=$(cat VERSION) //grpc/nodejs:deploy-npm -- release
136-
dependencies: [deploy-github]
137-
deploy-pip-release:
138-
image: vaticle-ubuntu-22.04
139-
command: |
140-
export PYENV_ROOT="/opt/pyenv"
141-
pyenv install 3.7.9
142-
pyenv global 3.7.9
143-
sudo unlink /usr/bin/python3
144-
sudo ln -s $(which python3) /usr/bin/python3
145-
sudo ln -s /usr/share/pyshared/lsb_release.py /opt/pyenv/versions/3.7.9/lib/python3.7/site-packages/lsb_release.py
146-
export DEPLOY_PIP_USERNAME=$REPO_PYPI_USERNAME
147-
export DEPLOY_PIP_PASSWORD=$REPO_PYPI_PASSWORD
148-
bazel run --define version=$(cat VERSION) //grpc/python:deploy-pip -- release
149-
dependencies: [deploy-github]
150-
deploy-crate-release:
151-
image: vaticle-ubuntu-22.04
152-
command: |
153-
export DEPLOY_CRATE_TOKEN=$REPO_CRATES_TOKEN
154-
bazel run --define version=$(cat VERSION) //grpc/rust:deploy_crate -- release
155-
dependencies: [deploy-github]

BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ filegroup(
6060
name = "ci",
6161
data = [
6262
"@vaticle_dependencies//library/maven:update",
63-
"@vaticle_dependencies//tool/cargo:sync",
63+
"@vaticle_dependencies//tool/ide:rust_sync",
6464
"@vaticle_dependencies//tool/unuseddeps:unused-deps",
6565
"@vaticle_dependencies//tool/release/notes:create",
6666
],

WORKSPACE

Lines changed: 83 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@
1515
# along with this program. If not, see <https://www.gnu.org/licenses/>.
1616
#
1717

18-
workspace(
19-
name = "vaticle_typedb_protocol",
20-
managed_directories = {"@npm": ["node_modules"]},
21-
)
18+
workspace(name = "vaticle_typedb_protocol")
2219

2320
################################
2421
# Load @vaticle_dependencies #
@@ -35,6 +32,12 @@ bazel_toolchain()
3532
load("@vaticle_dependencies//builder/java:deps.bzl", java_deps = "deps")
3633
java_deps()
3734

35+
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
36+
rules_jvm_external_deps()
37+
38+
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
39+
rules_jvm_external_setup()
40+
3841
# Load //builder/kotlin
3942
load("@vaticle_dependencies//builder/kotlin:deps.bzl", kotlin_deps = "deps")
4043
kotlin_deps()
@@ -53,31 +56,51 @@ rust_deps()
5356

5457
load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains")
5558
rules_rust_dependencies()
56-
rust_register_toolchains(edition = "2021", include_rustc_srcs = True)
59+
rust_register_toolchains(edition = "2021")
5760

5861
load("@vaticle_dependencies//library/crates:crates.bzl", "fetch_crates")
5962
fetch_crates()
6063
load("@crates//:defs.bzl", "crate_repositories")
6164
crate_repositories()
6265

6366
# Load //tool/common
64-
load("@vaticle_dependencies//tool/common:deps.bzl", "vaticle_dependencies_ci_pip",
65-
vaticle_dependencies_tool_maven_artifacts = "maven_artifacts")
67+
load("@vaticle_dependencies//tool/common:deps.bzl", "vaticle_dependencies_ci_pip", vaticle_dependencies_tool_maven_artifacts = "maven_artifacts")
6668
vaticle_dependencies_ci_pip()
6769

6870
# Load //builder/grpc
69-
load("@vaticle_dependencies//builder/grpc:deps.bzl", grpc_deps = "deps")
71+
load("@vaticle_dependencies//builder/grpc:deps.bzl", vaticle_grpc_deps = "deps")
72+
vaticle_grpc_deps()
73+
74+
load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_repos", "rules_proto_grpc_toolchains")
75+
rules_proto_grpc_toolchains()
76+
rules_proto_grpc_repos()
77+
78+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
79+
rules_proto_dependencies()
80+
rules_proto_toolchains()
81+
82+
load("@rules_proto_grpc//java:repositories.bzl", rules_proto_grpc_java_repos = "java_repos")
83+
rules_proto_grpc_java_repos()
84+
85+
load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_ARTIFACTS", "IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS", "grpc_java_repositories")
86+
load("@vaticle_dependencies//library/maven:rules.bzl", "parse_unversioned")
87+
io_grpc_artifacts = [parse_unversioned(c) for c in IO_GRPC_GRPC_JAVA_ARTIFACTS]
88+
89+
load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps")
7090
grpc_deps()
7191

72-
load("@com_github_grpc_grpc//bazel:grpc_deps.bzl",
73-
com_github_grpc_grpc_deps = "grpc_deps")
74-
com_github_grpc_grpc_deps()
92+
load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps")
93+
grpc_extra_deps()
7594

76-
load("@stackb_rules_proto//java:deps.bzl", "java_grpc_compile")
77-
java_grpc_compile()
95+
load("@rules_python//python:pip.bzl", "pip_parse")
96+
pip_parse(
97+
name = "rules_proto_grpc_py3_deps",
98+
python_interpreter = "python3",
99+
requirements_lock = "@rules_proto_grpc//python:requirements.txt",
100+
)
78101

79-
load("@stackb_rules_proto//node:deps.bzl", "node_grpc_compile")
80-
node_grpc_compile()
102+
load("@rules_proto_grpc_py3_deps//:requirements.bzl", "install_deps")
103+
install_deps()
81104

82105
# Load //tool/checkstyle
83106
load("@vaticle_dependencies//tool/checkstyle:deps.bzl", checkstyle_deps = "deps")
@@ -100,10 +123,6 @@ rules_pkg()
100123
load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
101124
rules_pkg_dependencies()
102125

103-
# Load //pip
104-
load("@vaticle_bazel_distribution//pip:deps.bzl", pip_deps = "deps")
105-
pip_deps()
106-
107126
# Load //github
108127
load("@vaticle_bazel_distribution//github:deps.bzl", github_deps = "deps")
109128
github_deps()
@@ -117,30 +136,58 @@ load("@vaticle_bazel_distribution//maven:deps.bzl", vaticle_bazel_distribution_m
117136

118137
load("@vaticle_dependencies//library/maven:rules.bzl", "maven")
119138
load("//dependencies/maven:artifacts.bzl", "artifacts")
120-
maven(artifacts + vaticle_dependencies_tool_maven_artifacts + vaticle_bazel_distribution_maven_artifacts)
121-
122-
##################################################
123-
# Create @vaticle_typedb_protocol_workspace_refs #
124-
##################################################
125-
126-
load("@vaticle_bazel_distribution//common:rules.bzl", "workspace_refs")
127-
workspace_refs(
128-
name = "vaticle_typedb_protocol_workspace_refs"
139+
maven(artifacts + vaticle_dependencies_tool_maven_artifacts + vaticle_bazel_distribution_maven_artifacts + io_grpc_artifacts,
140+
override_targets = IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS,
141+
generate_compat_repositories = True,
129142
)
130143

144+
load("@maven//:compat.bzl", "compat_repositories")
145+
compat_repositories()
146+
grpc_java_repositories()
147+
131148
#########################
132149
# Load NPM dependencies #
133150
#########################
134151

152+
# Load //builder/nodejs
135153
load("@vaticle_dependencies//builder/nodejs:deps.bzl", nodejs_deps = "deps")
136-
nodejs_deps(["@vaticle_dependencies//builder/nodejs:remove-node-patches.patch"])
137-
load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install")
154+
nodejs_deps()
155+
156+
load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
157+
rules_js_dependencies()
158+
159+
load("@rules_nodejs//nodejs:repositories.bzl", "DEFAULT_NODE_VERSION", "nodejs_register_toolchains")
160+
nodejs_register_toolchains(
161+
name = "nodejs",
162+
node_version = "17.9.1",
163+
)
164+
165+
load("@aspect_rules_js//npm:repositories.bzl", "npm_translate_lock")
166+
npm_translate_lock(
167+
name = "vaticle_typedb_protocol_npm",
168+
bins = {
169+
"protoc-gen-ts": {
170+
"protoc-gen-ts-js": "./bin/protoc-gen-ts.js",
171+
},
172+
},
173+
pnpm_lock = "//grpc/nodejs:pnpm-lock.yaml",
174+
)
175+
176+
load("@vaticle_typedb_protocol_npm//:repositories.bzl", "npm_repositories")
177+
npm_repositories()
178+
179+
# Setup rules_ts
180+
load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies")
138181

139-
node_repositories(
140-
preserve_symlinks = False,
182+
rules_ts_dependencies(
183+
ts_version_from = "//grpc/nodejs:package.json",
141184
)
142-
yarn_install(
143-
name = "npm",
144-
package_json = "//grpc/nodejs:package.json",
145-
yarn_lock = "//grpc/nodejs:yarn.lock",
185+
186+
##################################################
187+
# Create @vaticle_typedb_protocol_workspace_refs #
188+
##################################################
189+
190+
load("@vaticle_bazel_distribution//common:rules.bzl", "workspace_refs")
191+
workspace_refs(
192+
name = "vaticle_typedb_protocol_workspace_refs"
146193
)

cluster/BUILD

Lines changed: 0 additions & 52 deletions
This file was deleted.

0 commit comments

Comments
 (0)