Moved Records into the document module.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use crate::{
|
||||
action::{Action, MsgAction},
|
||||
message::wrapper::{Message, Records},
|
||||
action::{Action, MsgAction, Records},
|
||||
message::wrapper::Message,
|
||||
name::{Name, NameType, Names},
|
||||
queue::{
|
||||
data_director::{Include, Path, RegMsg, Register},
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
use crate::{
|
||||
action::{Action, CalcValue, Calculation, MsgAction, Query},
|
||||
action::{Action, CalcValue, Calculation, MsgAction, Query, Records},
|
||||
document::{
|
||||
definition::{DocDef, DocFuncType},
|
||||
field::Field,
|
||||
},
|
||||
message::wrapper::{InternalRecord, InternalRecords, Message, Oid, Records, Reply, Update},
|
||||
message::wrapper::{InternalRecord, InternalRecords, Message, Oid, Reply, Update},
|
||||
mtterror::{ErrorID, MTTError},
|
||||
name::NameType,
|
||||
queue::{
|
||||
|
||||
67
src/document/record.rs
Normal file
67
src/document/record.rs
Normal file
@@ -0,0 +1,67 @@
|
||||
use crate::{
|
||||
message::wrapper::{InternalRecord, InternalRecords, Oid, Record},
|
||||
name::{Name, Names},
|
||||
};
|
||||
|
||||
#[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<InternalRecord> {
|
||||
self.data.insert(oid, record)
|
||||
}
|
||||
|
||||
pub fn len(&self) -> usize {
|
||||
self.data.len()
|
||||
}
|
||||
|
||||
pub fn iter(&self) -> impl Iterator<Item = Record> {
|
||||
RecordIter::new(self)
|
||||
}
|
||||
|
||||
pub fn get_internal_records(&self) -> &InternalRecords {
|
||||
&self.data
|
||||
}
|
||||
}
|
||||
|
||||
struct RecordIter {
|
||||
names: Names,
|
||||
recs: Vec<InternalRecord>,
|
||||
}
|
||||
|
||||
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<Self::Item> {
|
||||
match self.recs.pop() {
|
||||
Some(rec) => Some(Record::with_data(self.names.clone(), rec.clone())),
|
||||
None => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,13 +85,12 @@ impl Session {
|
||||
mod sessions {
|
||||
use super::*;
|
||||
use crate::{
|
||||
action::{Addition, MsgAction, Query},
|
||||
action::{Addition, MsgAction, Query, Records},
|
||||
document::{
|
||||
clock::{clock_test_support::gen_clock_message, Clock},
|
||||
create::CreateDoc,
|
||||
field::Field,
|
||||
},
|
||||
message::wrapper::Records,
|
||||
mtterror::{ErrorID, MTTError},
|
||||
name::{Name, NameType, Names},
|
||||
queue::data_director::{Include, Path, RegMsg, Register},
|
||||
|
||||
Reference in New Issue
Block a user