use tracing::{debug, trace};
use crate::parser::RawObject;
use super::clone_raw_object_box::clone_raw_object_box;
pub fn with_purge(
all_raws: &[Box<dyn RawObject>],
object_ids_to_purge: &[&str],
) -> Vec<Box<dyn RawObject>> {
let mut new_raws: Vec<Box<dyn RawObject>> = Vec::new();
for raw in all_raws {
if object_ids_to_purge.contains(&raw.get_object_id()) {
trace!("clone_raw_vector purging {}", raw.get_object_id());
} else {
new_raws.push(clone_raw_object_box(raw));
}
}
new_raws
}
pub fn with_limit_and_page(
all_raws: &[Box<dyn RawObject>],
limit: usize,
page: usize,
) -> Vec<Box<dyn RawObject>> {
let mut new_raws: Vec<Box<dyn RawObject>> = Vec::new();
let page = if page > 0 { page - 1 } else { page };
let start = limit * page;
let end = start + limit;
debug!("with_limit_and_page start: {start}, end: {end}, page: {page}");
for (pos, raw) in all_raws.iter().enumerate() {
if pos >= start && pos < end {
new_raws.push(clone_raw_object_box(raw));
}
}
new_raws
}