mempal 0.5.4

Project memory for coding agents. Single binary, hybrid search, knowledge graph.
Documentation
pub fn build_filter_clause(alias: &str, start_param: usize) -> String {
    let prefix = if alias.is_empty() {
        String::new()
    } else {
        format!("{alias}.")
    };
    let wing_param = start_param;
    let room_param = start_param + 1;
    let memory_kind_param = start_param + 2;
    let domain_param = start_param + 3;
    let field_param = start_param + 4;
    let tier_param = start_param + 5;
    let status_param = start_param + 6;
    let anchor_kind_param = start_param + 7;

    format!(
        "WHERE {prefix}deleted_at IS NULL \
         AND (?{wing_param} IS NULL OR {prefix}wing = ?{wing_param}) \
         AND (?{room_param} IS NULL OR {prefix}room = ?{room_param}) \
         AND (?{memory_kind_param} IS NULL OR {prefix}memory_kind = ?{memory_kind_param}) \
         AND (?{domain_param} IS NULL OR {prefix}domain = ?{domain_param}) \
         AND (?{field_param} IS NULL OR {prefix}field = ?{field_param}) \
         AND (?{tier_param} IS NULL OR {prefix}tier = ?{tier_param}) \
         AND (?{status_param} IS NULL OR {prefix}status = ?{status_param}) \
         AND (?{anchor_kind_param} IS NULL OR {prefix}anchor_kind = ?{anchor_kind_param})"
    )
}