Principal search index (closes #1368)

This commit is contained in:
mdecimus
2025-04-16 13:07:22 +02:00
parent c5596fb656
commit 3bd255eb09
9 changed files with 245 additions and 104 deletions

View File

@@ -322,6 +322,10 @@ impl ValueClass {
.write(6u8)
.write(*principal_id)
.write(*has_member),
DirectoryClass::Index { word, principal_id } => serializer
.write(7u8)
.write(word.as_slice())
.write(*principal_id),
},
ValueClass::Queue(queue) => match queue {
QueueClass::Message(queue_id) => serializer.write(*queue_id),
@@ -534,6 +538,7 @@ impl ValueClass {
DirectoryClass::NameToId(v) | DirectoryClass::EmailToId(v) => v.len(),
DirectoryClass::Principal(_) | DirectoryClass::UsedQuota(_) => U32_LEN,
DirectoryClass::Members { .. } | DirectoryClass::MemberOf { .. } => U32_LEN * 2,
DirectoryClass::Index { word, .. } => word.len() + U32_LEN,
},
ValueClass::Blob(op) => match op {
BlobOp::Reserve { .. } => BLOB_HASH_LEN + U64_LEN + U32_LEN + 1,

View File

@@ -203,6 +203,7 @@ pub enum InMemoryClass {
pub enum DirectoryClass {
NameToId(Vec<u8>),
EmailToId(Vec<u8>),
Index { word: Vec<u8>, principal_id: u32 },
MemberOf { principal_id: u32, member_of: u32 },
Members { principal_id: u32, has_member: u32 },
Principal(u32),