Moved Records into the document module.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
2026-02-13 12:00:39 -05:00
parent a9b87200ef
commit 404c6e9c34
13 changed files with 2526 additions and 28 deletions

View File

@@ -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},

View File

@@ -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
View 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,
}
}
}

View File

@@ -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},