Skip to content

Commit 17b9132

Browse files
Merge pull request #307 from code0-tech/300-proxy-service
proxy service
2 parents ec387a4 + adcf420 commit 17b9132

21 files changed

Lines changed: 251 additions & 64 deletions

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
env:
4747
RUST_BACKTRACE: 'full'
4848
- name: Test De/Serialization from/to json
49-
run: PATH=${{ runner.temp }}/proto/bin:$PATH cargo test --features sagittarius
49+
run: PATH=${{ runner.temp }}/proto/bin:$PATH cargo test
5050
env:
5151
RUST_BACKTRACE: 'full'
5252
- name: Package crate

README.md

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ To enable additional features::
1919

2020
```toml
2121
[dependencies]
22-
tucana = { version = "<version>", features = ["sagittarius", "aquila"] }
22+
tucana = { version = "<version>", features = ["sagittarius_rails", "aquila"] }
2323
```
2424

2525
### Ruby
@@ -33,7 +33,7 @@ gem 'tucana', '<version>'
3333
Don't forget to initialize the required feature:
3434
```ruby
3535
# For Sagittarius
36-
Tucana.load_protocol(:sagittarius)
36+
Tucana.load_protocol(:sagittarius_rails)
3737

3838
# For Aquila
3939
Tucana.load_protocol(:aquila)
@@ -47,26 +47,41 @@ See: [NPM](https://www.npmjs.com/package/@code0-tech/tucana)
4747
npm i @code0-tech/tucana
4848
```
4949

50+
### Python
51+
52+
See: [PyPI](https://pypi.org/project/tucana/)
53+
54+
```console
55+
pip install tucana
56+
```
57+
5058
## Project Structure
5159

52-
The project is organized with services functioning as servers. Each protocol in the Sagittarius folder corresponds to
53-
services that Sagittarius must implement as a server.
60+
The project is organized with services functioning as servers. Each protocol in the Aquila folder corresponds to
61+
services that Aquila must implement as a server.
62+
63+
> Notice: Sagittarius has been splitted into a service without and with streams regarding issues due to the thread blocking implementation of Ruby gRPC
5464
5565
```ascii-tree
5666
.
5767
├── aquila
5868
│ ├── action - Action service (emits events, and handles executions)
5969
│ ├── module - Module service for Taurus to send over datatypes, functions and flow types
6070
│ ├── runtime_status - Service for runtime status (handles information about Draco and Taurus)
61-
│ ├── runtime_usage - Service for runtime usage (handles execution time of a flow)
6271
│ └── execution - Service for updating completed executions
63-
├── sagittarius
72+
├── sagittarius_gateway
73+
│ ├── flow - Flow service (handles flow updates)
74+
│ ├── module - Module service to receive datatypes, functions and flow types from aquila
75+
│ ├── runtime_status - Service for runtime status (handles information about Draco and Taurus)
76+
│ ├── runtime_usage - Service for runtime usage (handles execution time of a flow)
77+
│ └── test_execution - Service and Types for the test execution├── sagittarius
78+
├── sagittarius_rails
6479
│ ├── flow - Flow service (handles flow updates)
6580
│ ├── module - Module service to receive datatypes, functions and flow types from aquila
66-
│ ├── ping - Ping service (performs life checks)
6781
│ ├── runtime_status - Service for runtime status (handles information about Draco and Taurus)
6882
│ ├── runtime_usage - Service for runtime usage (handles execution time of a flow)
69-
│ └── test_execution - Service and Types for the test execution
83+
│ ├── test_execution - Service and Types for the test execution
84+
│ └── token - Service for verifing a runtime token
7085
└── shared
7186
├── data_type - Defines types for data types
7287
├── errors - Defines error object

build/python/scripts/generate.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ def organize_generated_files(output_dir: Path) -> None:
6666
protocol_map = {
6767
"shared": output_dir / "shared",
6868
"aquila": output_dir / "aquila",
69-
"sagittarius": output_dir / "sagittarius",
69+
"sagittarius_gateway": output_dir / "sagittarius_gateway",
70+
"sagittarius_rails": output_dir / "sagittarius_rails",
7071
"velorum": output_dir / "velorum",
7172
}
7273

@@ -95,7 +96,7 @@ def organize_generated_files(output_dir: Path) -> None:
9596

9697

9798
def create_init_files(output_dir: Path) -> None:
98-
for namespace in ["shared", "aquila", "sagittarius", "velorum"]:
99+
for namespace in ["shared", "aquila", "sagittarius_gateway", "sagittarius_rails", "velorum"]:
99100
ns_dir = output_dir / namespace
100101
if ns_dir.exists():
101102
init_file = ns_dir / "__init__.py"
@@ -154,7 +155,7 @@ def main():
154155

155156
print(f"\n✅ Generation complete!")
156157
print(f" Output directory: {generated_dir}")
157-
print(f" Ready to import: from tucana.generated import shared, aquila, sagittarius, velorum")
158+
print(f" Ready to import: from tucana.generated import shared, aquila, sagittarius_gateway, sagittarius_rails, velorum")
158159

159160

160161
if __name__ == "__main__":

build/python/tests/test_tucana.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@ def test_load_aquila():
88
from tucana.generated import aquila # noqa: F401
99

1010

11-
def test_load_sagittarius():
12-
"""Test loading sagittarius protocol."""
13-
from tucana.generated import sagittarius # noqa: F401
11+
def test_load_sagittarius_gateway():
12+
"""Test loading sagittarius_gateway protocol."""
13+
from tucana.generated import sagittarius_gateway # noqa: F401
14+
15+
16+
def test_load_sagittarius_rails():
17+
"""Test loading sagittarius_rails protocol."""
18+
from tucana.generated import sagittarius_rails # noqa: F401
1419

1520

1621
def test_load_velorum():
1722
"""Test loading velorum protocol."""
18-
from tucana.generated import velorum # noqa: F401
23+
from tucana.generated import velorum # noqa: F401

build/ruby/lib/tucana.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
module Tucana
66
class Error < StandardError; end
77

8-
AVAILABLE_PROTOCOLS = %i[aquila sagittarius velorum]
8+
AVAILABLE_PROTOCOLS = %i[aquila sagittarius_gateway sagittarius_rails velorum]
99

1010
def self.load_protocol(protocol)
1111
if protocol != :shared

build/rust/Cargo.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ name = "tucana"
2323
path = "src/lib.rs"
2424

2525
[features]
26-
default = ["aquila", "sagittarius", "velorum"]
26+
default = ["aquila", "sagittarius_gateway", "sagittarius_rails", "velorum"]
2727
aquila = []
28-
sagittarius = []
28+
sagittarius_gateway = []
29+
sagittarius_rails = []
2930
velorum = []
30-
all = ["aquila", "sagittarius", "velorum"]
31+
all = ["aquila", "sagittarius_gateway", "sagittarius_rails", "velorum"]
3132

3233
[build-dependencies]
3334
tonic-prost-build = { version = "0.14.0" }

build/rust/src/lib.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,16 @@ pub mod aquila {
1111
include!("generated/aquila.serde.rs");
1212
}
1313

14-
#[cfg(feature = "sagittarius")]
15-
pub mod sagittarius {
16-
include!("generated/sagittarius.rs");
17-
include!("generated/sagittarius.serde.rs");
14+
#[cfg(feature = "sagittarius_gateway")]
15+
pub mod sagittarius_gateway {
16+
include!("generated/sagittarius_gateway.rs");
17+
include!("generated/sagittarius_gateway.serde.rs");
18+
}
19+
20+
#[cfg(feature = "sagittarius_rails")]
21+
pub mod sagittarius_rails {
22+
include!("generated/sagittarius_rails.rs");
23+
include!("generated/sagittarius_rails.serde.rs");
1824
}
1925

2026
#[cfg(feature = "velorum")]

build/ts/package.json

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@
1616
"scripts": {
1717
"build": "vite build",
1818
"generate:aquila": "protoc --ts_opt=add_pb_suffix --ts_opt=generate_dependencies --ts_out=pb/_generated --proto_path=../../proto/aquila --proto_path=../../proto/shared ../../proto/aquila/*.proto",
19-
"generate:sagittarius": "protoc --ts_opt=add_pb_suffix --ts_opt=generate_dependencies --ts_out=pb/_generated --proto_path=../../proto/sagittarius --proto_path=../../proto/shared ../../proto/sagittarius/*.proto",
19+
"generate:sagittarius_gateway": "protoc --ts_opt=add_pb_suffix --ts_opt=generate_dependencies --ts_out=pb/_generated --proto_path=../../proto/sagittarius_gateway --proto_path=../../proto/shared ../../proto/sagittarius_gateway/*.proto",
20+
"generate:sagittarius_rails": "protoc --ts_opt=add_pb_suffix --ts_opt=generate_dependencies --ts_out=pb/_generated --proto_path=../../proto/sagittarius_rails --proto_path=../../proto/shared ../../proto/sagittarius_rails/*.proto",
2021
"generate:velorum": "protoc --ts_opt=add_pb_suffix --ts_opt=generate_dependencies --ts_out=pb/_generated --proto_path=../../proto/velorum --proto_path=../../proto/shared ../../proto/velorum/*.proto",
2122
"generate:shared": "protoc --ts_opt=add_pb_suffix --ts_opt=generate_dependencies --ts_out=pb/_generated --proto_path=../../proto/shared ../../proto/shared/*.proto",
22-
"generate": "npm run clean && npm run generate:shared && npm run generate:sagittarius && npm run generate:aquila && npm run generate:velorum && npm run generate:exports",
23+
"generate": "npm run clean && npm run generate:shared && npm run generate:sagittarius_gateway && npm run generate:sagittarius_rails && npm run generate:aquila && npm run generate:velorum && npm run generate:exports",
2324
"generate:exports": "node scripts/generateExports.mjs",
2425
"clean": "rm -rf pb/_generated/*.js && rm -rf pb/_generated/*.ts && rm -rf helpers/*.js"
2526
},
@@ -48,10 +49,15 @@
4849
"import": "./dist/aquila.es.js",
4950
"require": "./dist/aquila.cjs.js"
5051
},
51-
"./sagittarius": {
52-
"types": "./dist/sagittarius.d.ts",
53-
"import": "./dist/sagittarius.es.js",
54-
"require": "./dist/sagittarius.cjs.js"
52+
"./sagittarius_gateway": {
53+
"types": "./dist/sagittarius_gateway.d.ts",
54+
"import": "./dist/sagittarius_gateway.es.js",
55+
"require": "./dist/sagittarius_gateway.cjs.js"
56+
},
57+
"./sagittarius_rails": {
58+
"types": "./dist/sagittarius_rails.d.ts",
59+
"import": "./dist/sagittarius_rails.es.js",
60+
"require": "./dist/sagittarius_rails.cjs.js"
5561
},
5662
"./velorum": {
5763
"types": "./dist/velorum.d.ts",

build/ts/tsconfig.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
"strict": true,
88
"skipLibCheck": true
99
},
10-
"include": ["helpers", "pb", "pb/aquila.ts", "pb/shared.ts", "pb/sagittarius.ts"]
11-
}
10+
"include": ["helpers", "pb", "pb/aquila.ts", "pb/shared.ts", "pb/sagittarius_gateway.ts", "pb/sagittarius_rails.ts", "pb/velorum.ts"]
11+
}

build/ts/vite.config.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ export default defineConfig({
1111
entry: {
1212
shared: resolve(__dirname, "pb/shared.ts"),
1313
aquila: resolve(__dirname, "pb/aquila.ts"),
14-
sagittarius: resolve(__dirname, "pb/sagittarius.ts"),
14+
sagittarius_gateway: resolve(__dirname, "pb/sagittarius_gateway.ts"),
15+
sagittarius_rails: resolve(__dirname, "pb/sagittarius_rails.ts"),
1516
velorum: resolve(__dirname, "pb/velorum.ts"),
1617
helpers: resolve(__dirname, "helpers/helpers.ts"),
1718
},
@@ -24,7 +25,8 @@ export default defineConfig({
2425
input: {
2526
shared: resolve(__dirname, "pb/shared.ts"),
2627
aquila: resolve(__dirname, "pb/aquila.ts"),
27-
sagittarius: resolve(__dirname, "pb/sagittarius.ts"),
28+
sagittarius_gateway: resolve(__dirname, "pb/sagittarius_gateway.ts"),
29+
sagittarius_rails: resolve(__dirname, "pb/sagittarius_rails.ts"),
2830
velorum: resolve(__dirname, "pb/velorum.ts"),
2931
helpers: resolve(__dirname, "helpers/helpers.ts"),
3032
},
@@ -65,4 +67,4 @@ export default defineConfig({
6567
"@": resolve(__dirname, "src"),
6668
},
6769
},
68-
});
70+
});

0 commit comments

Comments
 (0)