use serde::{Deserialize, Serialize};
use crate::schema::FieldValue;
use super::{PortError, RowRange};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum RowWriteOp {
Insert(Vec<FieldValue>),
Update {
row: usize,
values: Vec<FieldValue>,
},
Delete {
row: usize,
},
}
pub fn window_slice(
table: &str,
range: RowRange,
count: usize,
) -> Result<(usize, usize), PortError> {
if range.start > count {
return Err(PortError::OutOfRange {
table: table.to_owned(),
start: range.start,
len: range.len,
row_count: count,
});
}
let end = range.start.saturating_add(range.len).min(count);
Ok((range.start, end))
}