use nodedb_physical::physical_task::PhysicalTask;
use super::extract::resolve_edge_label;
use super::routed::{EdgeRouteCtx, push_edge_delete};
use crate::control::state::SharedState;
use crate::types::{DatabaseId, TenantId, TraceId};
pub async fn append_implicit_edge_delete_tasks(
state: &SharedState,
out: &mut Vec<PhysicalTask>,
tenant_id: TenantId,
database_id: DatabaseId,
trace_id: TraceId,
collection: &str,
edges: &[crate::control::planner::calvin::preexec::ScannedEdge],
) -> crate::Result<()> {
for edge in edges {
let label = resolve_edge_label(edge.label.as_deref());
push_edge_delete(
EdgeRouteCtx {
state,
tenant_id,
database_id,
trace_id,
collection,
src: &edge.from,
dst: &edge.to,
},
out,
label,
)
.await?;
}
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn delete_label_default_matches_insert_default() {
assert_eq!(resolve_edge_label(None), "edge");
assert_eq!(resolve_edge_label(Some("ROAD")), "ROAD");
}
}