use crate::bin_table::{FieldDefinition, Row, Value};
use std::sync::Arc;
#[derive(Debug, Clone)]
pub struct OwnedRow {
data: Vec<u8>,
heap: Arc<Vec<u8>>,
field_definitions: Arc<Vec<FieldDefinition>>,
}
impl OwnedRow {
pub(crate) fn new(
field_definitions: Arc<Vec<FieldDefinition>>,
heap: Arc<Vec<u8>>,
data: Vec<u8>,
) -> Self {
Self {
data,
heap,
field_definitions,
}
}
pub fn row(&self) -> Row<'_> {
Row::new(&self.field_definitions, &self.data, &self.heap)
}
pub fn get(&self, key: &str) -> crate::Result<Option<Value>> {
self.row().get(key)
}
pub fn get_at(&self, index: usize) -> crate::Result<Option<Value>> {
self.row().get_at(index)
}
pub fn field_definitions(&self) -> &[FieldDefinition] {
&self.field_definitions
}
}