nodedb 0.3.0

Local-first, real-time, edge-to-cloud hybrid database for multi-modal workloads
Documentation
// SPDX-License-Identifier: BUSL-1.1

//! Query engine plan builders (recursive CTE).

use nodedb_types::protocol::TextFields;

use crate::bridge::envelope::PhysicalPlan;
use nodedb_physical::physical_plan::QueryOp;

pub(crate) fn build_recursive_scan(
    fields: &TextFields,
    collection: &str,
) -> crate::Result<PhysicalPlan> {
    let base_filters = fields.filters.clone().unwrap_or_default();
    let limit = fields.limit.unwrap_or(10_000) as usize;

    Ok(PhysicalPlan::Query(QueryOp::RecursiveScan {
        collection: collection.to_string(),
        base_filters,
        recursive_filters: Vec::new(),
        join_link: None,
        max_iterations: 100,
        distinct: true,
        limit,
    }))
}