https://github.com/code0-tech/code0-flow
Library for managing the Flows inside of the FlowQueue & FlowStore.
https://github.com/code0-tech/code0-flow
code0 crate flow flows library rust rust-lang
Last synced: 2 days ago
JSON representation
Library for managing the Flows inside of the FlowQueue & FlowStore.
- Host: GitHub
- URL: https://github.com/code0-tech/code0-flow
- Owner: code0-tech
- Created: 2025-02-03T14:39:43.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-08-08T16:38:28.000Z (5 months ago)
- Last Synced: 2025-08-08T18:33:22.922Z (5 months ago)
- Topics: code0, crate, flow, flows, library, rust, rust-lang
- Language: Rust
- Homepage: https://crates.io/crates/code0-flow
- Size: 229 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Code0-Flow - Flow Management Library
[](https://crates.io/crates/code0-flow)
[](https://docs.rs/code0-flow)
code0-flow is a Rust library developed by Code0 for managing flows within the FlowQueue and FlowStore. This libray is only for the internal usage of the execution block services (Aquila, Draco & Tarurs) and is not intendet to get used elsewhere.
## Features
- `flow_definition` update the Adapter & Runtime definitions
- `flow_config` base configuration for each service
- `flow_health` provide health checks including NATS connectivity for readiness probes
## FlowStore
### Keys
The key in the FlowStore in a Store will always have the pattern:
`flow_id::project_id::flow_type_identifier::`
E.g. for REST:
`1::1::REST::test.code0.tech::GET`
This would be a REST Flow identifier
## FlowDefinition
```rust
// Define FlowType
let flow_type = FlowType {
identifier: String::from("REST"),
settings: vec![],
input_type_identifier: Some(String::from("HTTP_REQUEST_OBJECT")),
return_type_identifier: Some(String::from("HTTP_RESPONSE_OBJECT")),
editable: true,
name: vec![Translation {
code: String::from("en-US"),
content: String::from("Rest Endpoint"),
}],
description: vec![Translation {
code: String::from("en-US"),
content: String::from("A REST API is a web service that lets clients interact with data on a server using standard HTTP methods like GET, POST, PUT, and DELETE, usually returning results in JSON format."),
}],
};
// Define DataTypes
let data_type = DataType {
variant: 5,
name: vec![Translation {
code: String::from("en-US"),
content: String::from("HTTP Headers"),
}],
identifier: String::from("HTTP_HEADER_MAP"),
input_types: vec![],
return_type: None,
parent_type_identifier: Some(String::from("ARRAY")),
rules: vec![DataTypeRule {
config: Some(Config::ContainsType(DataTypeContainsTypeRuleConfig {
data_type_identifier: String::from("HTTP_HEADER_ENTRY"),
})),
}],
}
// Send to get updated in Sagittarius
let update_client = code0_flow::flow_definition::FlowUpdateService::from_url(aquila_url)
.with_data_types(vec![data_type])
.with_flow_types(vec![flow_type]);
// Response --> true if successfull
update_client.send().await;
```
## FlowHealth
```rust
use code0_flow::flow_health::HealthService;
use tonic_health::pb::health_server::HealthServer;
// Create health service with NATS URL
let health_service = HealthService::new("nats://localhost:4222".to_string());
// Use with tonic gRPC server
let health_server = HealthServer::new(health_service);
// The service provides:
// - "liveness" check: Always returns Serving (application is running)
// - "readiness" check: Returns Serving only if NATS connection is healthy
```