diff --git a/src/document.rs b/src/document.rs index e8fb005..5640e82 100644 --- a/src/document.rs +++ b/src/document.rs @@ -5,6 +5,8 @@ mod field; mod record; mod session; +use record::InternalRecords; + pub use clock::Clock; pub use create::CreateDoc; pub use definition::DocDef; diff --git a/src/document/create.rs b/src/document/create.rs index 11dc263..702fa0b 100644 --- a/src/document/create.rs +++ b/src/document/create.rs @@ -1,10 +1,11 @@ +use super::InternalRecords; use crate::{ action::{Action, CalcValue, Calculation, MsgAction, Query, Records}, document::{ definition::{DocDef, DocFuncType}, field::Field, }, - message::wrapper::{InternalRecord, InternalRecords, Message, Oid, Reply, Update}, + message::wrapper::{InternalRecord, Message, Oid, Reply, Update}, mtterror::{ErrorID, MTTError}, name::NameType, queue::{ diff --git a/src/document/record.rs b/src/document/record.rs index 791f0fa..90f1abe 100644 --- a/src/document/record.rs +++ b/src/document/record.rs @@ -1,9 +1,55 @@ use crate::{ action::Field, - message::wrapper::{InternalRecord, InternalRecords, Oid}, + message::wrapper::{InternalRecord, Oid}, mtterror::{ErrorID, MTTError}, name::{Name, NameType, Names}, }; +use std::collections::HashMap; + +#[derive(Clone, Debug)] +pub struct InternalRecords { + data: HashMap, +} + +impl InternalRecords { + pub fn new() -> Self { + Self { + data: HashMap::new(), + } + } + + pub fn insert(&mut self, oid: Oid, record: InternalRecord) -> Option { + self.data.insert(oid, record) + } + + pub fn get(&self, oid: &Oid) -> Option<&InternalRecord> { + self.data.get(oid) + } + + pub fn remove(&mut self, oid: &Oid) -> Option { + self.data.remove(oid) + } + + pub fn iter(&self) -> impl Iterator { + self.data.iter() + } + + pub fn keys(&self) -> impl Iterator { + self.data.keys() + } + + pub fn values(&self) -> impl Iterator { + self.data.values() + } + + pub fn contains_key(&self, oid: &Oid) -> bool { + self.data.contains_key(oid) + } + + pub fn len(&self) -> usize { + self.data.len() + } +} #[derive(Clone, Debug)] pub struct Record { diff --git a/src/message/wrapper.rs b/src/message/wrapper.rs index 3db75a7..6ba4ab6 100644 --- a/src/message/wrapper.rs +++ b/src/message/wrapper.rs @@ -396,53 +396,6 @@ impl InternalRecord { } } -#[derive(Clone, Debug)] -pub struct InternalRecords { - data: HashMap, -} - -impl InternalRecords { - pub fn new() -> Self { - Self { - data: HashMap::new(), - } - } - - pub fn insert(&mut self, oid: Oid, record: InternalRecord) -> Option { - self.data.insert(oid, record) - } - - pub fn get(&self, oid: &Oid) -> Option<&InternalRecord> { - self.data.get(oid) - } - - pub fn remove(&mut self, oid: &Oid) -> Option { - self.data.remove(oid) - } - - pub fn iter(&self) -> impl Iterator { - self.data.iter() - } - - pub fn keys(&self) -> impl Iterator { - self.data.keys() - } - - pub fn values(&self) -> impl Iterator { - self.data.values() - } - - pub fn contains_key(&self, oid: &Oid) -> bool { - self.data.contains_key(oid) - } - - pub fn len(&self) -> usize { - self.data.len() - } -} - - - #[derive(Clone, Debug)] pub struct Document { data: HashMap,