diff --git a/src/document/record.rs b/src/document/record.rs index 91676ba..791f0fa 100644 --- a/src/document/record.rs +++ b/src/document/record.rs @@ -1,8 +1,39 @@ use crate::{ - message::wrapper::{InternalRecord, InternalRecords, Oid, Record}, - name::{Name, Names}, + action::Field, + message::wrapper::{InternalRecord, InternalRecords, Oid}, + mtterror::{ErrorID, MTTError}, + name::{Name, NameType, Names}, }; +#[derive(Clone, Debug)] +pub struct Record { + names: Names, + data: InternalRecord, +} + +impl Record { + pub fn with_data(names: Names, rec: InternalRecord) -> Self { + Self { + names: names, + data: rec, + } + } + + pub fn get(&self, field_id: NT) -> Result + where + NT: Into, + { + let id = match self.names.get_id(field_id) { + Ok(data) => data, + Err(err) => return Err(err), + }; + match self.data.get(&id) { + Some(data) => Ok(data.clone()), + None => Err(MTTError::new(NameType::None, ErrorID::FieldMissingData)), + } + } +} + #[derive(Clone, Debug)] pub struct Records { names: Names, diff --git a/src/message/wrapper.rs b/src/message/wrapper.rs index ddeda2e..3db75a7 100644 --- a/src/message/wrapper.rs +++ b/src/message/wrapper.rs @@ -441,99 +441,7 @@ impl InternalRecords { } } -#[derive(Clone, Debug)] -pub struct Record { - names: Names, - data: InternalRecord, -} -impl Record { - pub fn with_data(names: Names, rec: InternalRecord) -> Self { - Self { - names: names, - data: rec, - } - } - - pub fn get(&self, field_id: NT) -> Result - where - NT: Into, - { - let id = match self.names.get_id(field_id) { - Ok(data) => data, - Err(err) => return Err(err), - }; - match self.data.get(&id) { - Some(data) => Ok(data.clone()), - None => Err(MTTError::new(NameType::None, ErrorID::FieldMissingData)), - } - } -} - -/* -#[derive(Clone, Debug)] -pub struct Records { - names: Names, - data: InternalRecords, -} - -impl Records { - pub fn new(names: Names) -> Self { - Self { - names: names, - data: InternalRecords::new(), - } - } - - pub fn with_data(names: Names, records: InternalRecords) -> Self { - Self { - names: names, - data: records, - } - } - - pub fn insert(&mut self, oid: Oid, record: InternalRecord) -> Option { - self.data.insert(oid, record) - } - - pub fn len(&self) -> usize { - self.data.len() - } - - pub fn iter(&self) -> impl Iterator { - RecordIter::new(self) - } - - pub fn get_internal_records(&self) -> &InternalRecords { - &self.data - } -} - -struct RecordIter { - names: Names, - recs: Vec, -} - -impl RecordIter { - fn new(records: &Records) -> Self { - Self { - names: records.names.clone(), - recs: records.data.values().cloned().collect(), - } - } -} - -impl Iterator for RecordIter { - type Item = Record; - - fn next(&mut self) -> Option { - match self.recs.pop() { - Some(rec) => Some(Record::with_data(self.names.clone(), rec.clone())), - None => None, - } - } -} -*/ #[derive(Clone, Debug)] pub struct Document {