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

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

2426
' Normal file

File diff suppressed because it is too large Load Diff

View File

@ -6,10 +6,7 @@ mod query;
mod request_data; mod request_data;
mod user; mod user;
pub use crate::document::{ pub use crate::document::{DocDef, Field, FieldType, Records};
definition::DocDef,
field::{Field, FieldType},
};
pub use action_type::Action; pub use action_type::Action;
pub use addition::Addition; pub use addition::Addition;
pub use calculation::{CalcValue, Calculation, Operand}; pub use calculation::{CalcValue, Calculation, Operand};

View File

@ -1,7 +1,7 @@
use super::{Addition, DocDef, Query, UserAction}; use super::{Addition, DocDef, Query, Records, UserAction};
use crate::{ use crate::{
message::{ message::{
wrapper::{Delete, Records, Reply, Update}, wrapper::{Delete, Reply, Update},
MessageAction, MessageAction,
}, },
mtterror::MTTError, mtterror::MTTError,
@ -33,6 +33,7 @@ impl MessageAction for MsgAction {
Self::Addition(data) => data.doc_name(), Self::Addition(data) => data.doc_name(),
Self::Query(data) => data.doc_name(), Self::Query(data) => data.doc_name(),
Self::Create(data) => data.doc_name(), Self::Create(data) => data.doc_name(),
Self::Error(data) => data.doc_name(),
_ => &NameType::None, _ => &NameType::None,
} }
} }

View File

@ -1,5 +1,4 @@
use super::Query; use super::{DocDef, FieldType, Query};
use crate::document::{definition::DocDef, field::FieldType};
pub enum UserAction { pub enum UserAction {
CreateDocument(DocDef), CreateDocument(DocDef),

View File

@ -1,5 +1,13 @@
pub mod clock; mod clock;
pub mod create; mod create;
pub mod definition; mod definition;
pub mod field; mod field;
pub mod session; mod record;
mod session;
pub use clock::Clock;
pub use create::CreateDoc;
pub use definition::DocDef;
pub use field::{Field, FieldType};
pub use record::Records;
pub use session::Session;

View File

@ -1,6 +1,6 @@
use crate::{ use crate::{
action::{Action, MsgAction}, action::{Action, MsgAction, Records},
message::wrapper::{Message, Records}, message::wrapper::Message,
name::{Name, NameType, Names}, name::{Name, NameType, Names},
queue::{ queue::{
data_director::{Include, Path, RegMsg, Register}, data_director::{Include, Path, RegMsg, Register},

View File

@ -1,10 +1,10 @@
use crate::{ use crate::{
action::{Action, CalcValue, Calculation, MsgAction, Query}, action::{Action, CalcValue, Calculation, MsgAction, Query, Records},
document::{ document::{
definition::{DocDef, DocFuncType}, definition::{DocDef, DocFuncType},
field::Field, field::Field,
}, },
message::wrapper::{InternalRecord, InternalRecords, Message, Oid, Records, Reply, Update}, message::wrapper::{InternalRecord, InternalRecords, Message, Oid, Reply, Update},
mtterror::{ErrorID, MTTError}, mtterror::{ErrorID, MTTError},
name::NameType, name::NameType,
queue::{ 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 { mod sessions {
use super::*; use super::*;
use crate::{ use crate::{
action::{Addition, MsgAction, Query}, action::{Addition, MsgAction, Query, Records},
document::{ document::{
clock::{clock_test_support::gen_clock_message, Clock}, clock::{clock_test_support::gen_clock_message, Clock},
create::CreateDoc, create::CreateDoc,
field::Field, field::Field,
}, },
message::wrapper::Records,
mtterror::{ErrorID, MTTError}, mtterror::{ErrorID, MTTError},
name::{Name, NameType, Names}, name::{Name, NameType, Names},
queue::data_director::{Include, Path, RegMsg, Register}, queue::data_director::{Include, Path, RegMsg, Register},

View File

@ -9,7 +9,7 @@ use action::{
Action, Addition, CalcValue, Calculation, DocDef, Field, FieldType, MsgAction, Operand, Query, Action, Addition, CalcValue, Calculation, DocDef, Field, FieldType, MsgAction, Operand, Query,
UserAction, UserAction,
}; };
use document::{clock::Clock, create::CreateDoc, session::Session}; use document::{Clock, CreateDoc, Session};
use message::{wrapper::Message, MessageAction}; use message::{wrapper::Message, MessageAction};
use queue::{ use queue::{
data_director::{Include, Path, RegMsg, Register}, data_director::{Include, Path, RegMsg, Register},

View File

@ -1,6 +1,5 @@
use crate::{ use crate::{
action::{CalcValue, MsgAction, Operand, Query}, action::{CalcValue, Field, FieldType, MsgAction, Operand, Query},
document::field::{Field, FieldType},
mtterror::{ErrorID, MTTError}, mtterror::{ErrorID, MTTError},
name::{NameType, Names}, name::{NameType, Names},
queue::data_director::{Include, Path, Route}, queue::data_director::{Include, Path, Route},
@ -88,7 +87,7 @@ impl Message {
#[cfg(test)] #[cfg(test)]
mod messages { mod messages {
use super::*; use super::*;
use crate::{document::definition::DocDef, name::Name}; use crate::{action::DocDef, name::Name};
#[test] #[test]
fn can_the_document_be_a_named_reference() { fn can_the_document_be_a_named_reference() {
@ -429,7 +428,7 @@ impl InternalRecords {
self.data.keys() self.data.keys()
} }
fn values(&self) -> impl Iterator<Item = &InternalRecord> { pub fn values(&self) -> impl Iterator<Item = &InternalRecord> {
self.data.values() self.data.values()
} }
@ -437,7 +436,7 @@ impl InternalRecords {
self.data.contains_key(oid) self.data.contains_key(oid)
} }
fn len(&self) -> usize { pub fn len(&self) -> usize {
self.data.len() self.data.len()
} }
} }
@ -449,7 +448,7 @@ pub struct Record {
} }
impl Record { impl Record {
fn with_data(names: Names, rec: InternalRecord) -> Self { pub fn with_data(names: Names, rec: InternalRecord) -> Self {
Self { Self {
names: names, names: names,
data: rec, data: rec,
@ -471,6 +470,7 @@ impl Record {
} }
} }
/*
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct Records { pub struct Records {
names: Names, names: Names,
@ -533,6 +533,7 @@ impl Iterator for RecordIter {
} }
} }
} }
*/
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct Document { pub struct Document {

View File

@ -1,5 +1,5 @@
use crate::{ use crate::{
document::field::{Field, FieldType}, action::{Field, FieldType},
message::MessageAction, message::MessageAction,
name::{Name, NameType}, name::{Name, NameType},
}; };

View File

@ -121,7 +121,7 @@ impl Path {
mod paths { mod paths {
use super::*; use super::*;
use crate::{ use crate::{
message::wrapper::Records, action::Records,
name::{Name, Names}, name::{Name, Names},
}; };