use serde::Serialize;
#[derive(Debug, Clone, Default, Serialize)]
pub struct Rows(pub Vec<Row>);
impl Rows {
pub fn as_slice(&self) -> &[Row] {
&self.0
}
pub fn iter(&self) -> std::slice::Iter<'_, Row> {
self.0.iter()
}
pub fn len(&self) -> usize {
self.0.len()
}
pub fn is_empty(&self) -> bool {
self.0.is_empty()
}
}
impl IntoIterator for Rows {
type Item = Row;
type IntoIter = std::vec::IntoIter<Row>;
fn into_iter(self) -> Self::IntoIter {
self.0.into_iter()
}
}
#[derive(Debug, Clone, Serialize)]
pub struct Row {
pub columns: Vec<String>,
pub values: Vec<serde_json::Value>,
}
impl Row {
pub fn get(&self, column: &str) -> Option<&serde_json::Value> {
let idx = self.columns.iter().position(|c| c == column)?;
self.values.get(idx)
}
}