mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-07 01:47:47 +08:00
46 lines
1.5 KiB
Rust
46 lines
1.5 KiB
Rust
use aether_routing_core::{ResolvedRoutingPolicy, RoutingDecisionTrace};
|
|
|
|
pub(crate) fn build_routing_trace_seed(
|
|
policy: &ResolvedRoutingPolicy,
|
|
client_api_format: &str,
|
|
) -> RoutingDecisionTrace {
|
|
RoutingDecisionTrace {
|
|
group_id: policy.group_id.clone(),
|
|
group_version: policy.group_version,
|
|
selection_source: policy.selection_source.clone(),
|
|
selected_rules: policy
|
|
.matched_rules
|
|
.iter()
|
|
.map(|rule| rule.id.clone())
|
|
.collect(),
|
|
original_model: policy.requested_model.clone(),
|
|
resolved_model: policy.resolved_model.clone(),
|
|
client_api_format: client_api_format.to_string(),
|
|
client_request_patch_summary: routing_patch_summary(&policy.mutation_plan),
|
|
runtime_facts: aether_routing_core::RoutingRuntimeFacts {
|
|
scheduler_mode: Some(policy.scheduling_mode),
|
|
priority_mode: Some(policy.priority_mode),
|
|
..Default::default()
|
|
},
|
|
..RoutingDecisionTrace::default()
|
|
}
|
|
}
|
|
|
|
fn routing_patch_summary(
|
|
plan: &aether_routing_core::MutationPlan,
|
|
) -> aether_routing_core::RoutingPatchSummary {
|
|
aether_routing_core::RoutingPatchSummary {
|
|
body_paths: plan
|
|
.body_patch
|
|
.iter()
|
|
.map(|operation| operation.path().to_string())
|
|
.collect(),
|
|
header_names: plan
|
|
.header_patch
|
|
.iter()
|
|
.map(|operation| operation.name().to_string())
|
|
.collect(),
|
|
failed_action: None,
|
|
}
|
|
}
|