Thanks to visit codestin.com
Credit goes to lib.rs

16 releases

Uses new Rust 2024

0.0.16 Sep 2, 2025
0.0.15 Sep 2, 2025
0.0.14 Aug 12, 2025
0.0.13 Jun 5, 2025
0.0.3 Feb 15, 2025

#1145 in Web programming

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

800 downloads per month

Apache-2.0

3.5MB
1.5K SLoC

Code0-Flow - Flow Management Library

Crate Documentation

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::<any_flow_type_specific_data>

E.g. for REST:

1::1::REST::test.code0.tech::GET

This would be a REST Flow identifier

FlowDefinition

// 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

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

Dependencies

~24–39MB
~690K SLoC