summaryrefslogtreecommitdiff
path: root/crates/jmap-proto
diff options
context:
space:
mode:
authormdecimus <mauro@stalw.art>2023-07-04 20:10:00 +0200
committermdecimus <mauro@stalw.art>2023-07-04 20:10:00 +0200
commit1cb539ce525742bb1bce06ef2ae87be155b3f936 (patch)
treed1dc755535e71bbaba96f14d056343643c3d7591 /crates/jmap-proto
parentb30e02248024e3262c9fdb929d1f4e4e821a4890 (diff)
Internal account id management.
Diffstat (limited to 'crates/jmap-proto')
-rw-r--r--crates/jmap-proto/src/object/index.rs43
-rw-r--r--crates/jmap-proto/src/object/mod.rs11
-rw-r--r--crates/jmap-proto/src/types/collection.rs6
3 files changed, 32 insertions, 28 deletions
diff --git a/crates/jmap-proto/src/object/index.rs b/crates/jmap-proto/src/object/index.rs
index 35c0660b..2c43e55d 100644
--- a/crates/jmap-proto/src/object/index.rs
+++ b/crates/jmap-proto/src/object/index.rs
@@ -147,8 +147,7 @@ impl IntoOperations for ObjectIndexBuilder {
// Insertion
build_batch(batch, self.index, &changes, true);
batch.ops.push(Operation::Value {
- field: Property::Value.into(),
- family: 0,
+ class: Property::Value.into(),
set: changes.serialize().into(),
});
}
@@ -162,8 +161,7 @@ impl IntoOperations for ObjectIndexBuilder {
batch.assert_value(Property::Value, &current);
build_batch(batch, self.index, &current.inner, false);
batch.ops.push(Operation::Value {
- field: Property::Value.into(),
- family: 0,
+ class: Property::Value.into(),
set: None,
});
}
@@ -370,10 +368,7 @@ fn merge_batch(
for item in current_value.chunks_exact(2) {
if let Some(Value::Id(id)) = item.first() {
if !value.contains(&Value::Id(*id)) {
- batch.ops.push(Operation::Acl {
- grant_account_id: id.document_id(),
- set: None,
- });
+ batch.ops.push(Operation::acl(id.document_id(), None));
}
}
}
@@ -399,10 +394,10 @@ fn merge_batch(
}
}
if add_item {
- batch.ops.push(Operation::Acl {
- grant_account_id: id.document_id(),
- set: acl.serialize().into(),
- });
+ batch.ops.push(Operation::acl(
+ id.document_id(),
+ acl.serialize().into(),
+ ));
}
}
}
@@ -413,10 +408,10 @@ fn merge_batch(
if let (Some(Value::Id(id)), Some(Value::UnsignedInt(acl))) =
(item.first(), item.last())
{
- batch.ops.push(Operation::Acl {
- grant_account_id: id.document_id(),
- set: acl.serialize().into(),
- });
+ batch.ops.push(Operation::acl(
+ id.document_id(),
+ acl.serialize().into(),
+ ));
}
}
}
@@ -424,10 +419,7 @@ fn merge_batch(
// Remove all ACLs
for item in current_values.chunks_exact(2) {
if let Some(Value::Id(id)) = item.first() {
- batch.ops.push(Operation::Acl {
- grant_account_id: id.document_id(),
- set: None,
- });
+ batch.ops.push(Operation::acl(id.document_id(), None));
}
}
}
@@ -455,8 +447,7 @@ fn merge_batch(
if has_changes {
batch.ops.push(Operation::Value {
- field: Property::Value.into(),
- family: 0,
+ class: Property::Value.into(),
set: current.serialize().into(),
});
}
@@ -561,10 +552,10 @@ fn build_batch(
if let (Some(Value::Id(id)), Some(Value::UnsignedInt(acl))) =
(item.first(), item.last())
{
- batch.ops.push(Operation::Acl {
- grant_account_id: id.document_id(),
- set: if set { acl.serialize().into() } else { None },
- });
+ batch.ops.push(Operation::acl(
+ id.document_id(),
+ if set { acl.serialize().into() } else { None },
+ ));
}
}
}
diff --git a/crates/jmap-proto/src/object/mod.rs b/crates/jmap-proto/src/object/mod.rs
index be3b4cf8..b1dacec1 100644
--- a/crates/jmap-proto/src/object/mod.rs
+++ b/crates/jmap-proto/src/object/mod.rs
@@ -30,7 +30,7 @@ pub mod sieve;
use std::slice::Iter;
use store::{
- write::{DeserializeFrom, SerializeInto, ToBitmaps},
+ write::{DeserializeFrom, SerializeInto, ToBitmaps, ValueClass},
Deserialize, Serialize,
};
use utils::{
@@ -261,3 +261,12 @@ impl DeserializeFrom for Value {
}
}
}
+
+impl From<Property> for ValueClass {
+ fn from(value: Property) -> Self {
+ ValueClass::Property {
+ field: value.into(),
+ family: 0,
+ }
+ }
+}
diff --git a/crates/jmap-proto/src/types/collection.rs b/crates/jmap-proto/src/types/collection.rs
index 0d1b4a90..99dcd6e1 100644
--- a/crates/jmap-proto/src/types/collection.rs
+++ b/crates/jmap-proto/src/types/collection.rs
@@ -37,7 +37,8 @@ pub enum Collection {
EmailSubmission = 4,
SieveScript = 5,
PushSubscription = 6,
- None = 7,
+ Principal = 7,
+ None = 8,
}
impl From<u8> for Collection {
@@ -50,6 +51,7 @@ impl From<u8> for Collection {
4 => Collection::EmailSubmission,
5 => Collection::SieveScript,
6 => Collection::PushSubscription,
+ 7 => Collection::Principal,
_ => Collection::None,
}
}
@@ -65,6 +67,7 @@ impl From<u64> for Collection {
4 => Collection::EmailSubmission,
5 => Collection::SieveScript,
6 => Collection::PushSubscription,
+ 7 => Collection::Principal,
_ => Collection::None,
}
}
@@ -107,6 +110,7 @@ impl Display for Collection {
Collection::Identity => write!(f, "identity"),
Collection::EmailSubmission => write!(f, "emailSubmission"),
Collection::SieveScript => write!(f, "sieveScript"),
+ Collection::Principal => write!(f, "principal"),
Collection::None => write!(f, ""),
}
}