From 2ea874f5a0260b8043ca889d37a224433933f967 Mon Sep 17 00:00:00 2001 From: Sebastian Moser Date: Sun, 8 Jan 2023 20:46:42 +0100 Subject: [PATCH] adding a field with first render now works --- js-client | 2 +- src/server/itemstore.rs | 37 ++++++++++++++++--------------------- src/server/proto.rs | 1 + 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/js-client b/js-client index 80abc59..4b589a2 160000 --- a/js-client +++ b/js-client @@ -1 +1 @@ -Subproject commit 80abc59ce52c829f81ca7dda35502a1d9f60e329 +Subproject commit 4b589a259127e7cc7af34e84a2cd3ed36a85a278 diff --git a/src/server/itemstore.rs b/src/server/itemstore.rs index d71c565..04d7405 100644 --- a/src/server/itemstore.rs +++ b/src/server/itemstore.rs @@ -86,20 +86,12 @@ impl Itemstore { } pub async fn update(&self, update: proto::Update) -> Result<(), MizeError>{ + println!("itemstore.update func"); let mut tr = self.db.transaction(true, true).await?; - let old_item_index = tr.get(update.id.clone().into_bytes()).await?; - let old_item = for key in old_item_index { - let mut key_get = format!("{}:", update.id).into_bytes(); - key_get.extend(key.clone()); - tr.get(key_get); - }; - - let mut keys: Vec> = Vec::new(); - //read keys - let mut keys = match tr.get(format!("{}", update.id).into_bytes()).await? { + let mut old_keys = match tr.get(format!("{}", update.id).into_bytes()).await? { Some(keys) => decode(keys), None => { return Err(MizeError{ @@ -112,31 +104,34 @@ impl Itemstore { //write new values for (mut key, delta) in update.raw { + let mut store_key = (update.id.clone() + ":").into_bytes(); - store_key.append(&mut key); + store_key.extend(key.clone()); + let mut new_val = Vec::new(); if let Some(old_val) = tr.get(store_key.clone()).await? { new_val = proto::apply_delta(old_val, delta)?; tr.set(store_key.clone(), new_val.clone()).await?; } else { - keys.push(key.clone()); + old_keys.push(key.clone()); new_val = proto::apply_delta(Vec::new(), delta)?; + tr.set(store_key.clone(), new_val.clone()).await?; } //remove field if new_val is empty - if (new_val.len() == 0) { - if let Some(key_index) = keys.iter().position(|x| *x == key.clone()){ - keys.remove(key_index); - } - tr.del(key).await?; - } else { - tr.set(store_key.clone(), new_val).await?; - } + //if (new_val.len() == 0) { + //if let Some(key_index) = keys.iter().position(|x| *x == key.clone()){ + //keys.remove(key_index); + //} + //tr.del(key).await?; + //} else { + //tr.set(store_key.clone(), new_val).await?; + //} } //write keys again - tr.set(update.id.into_bytes(), encode(keys)).await?; + tr.set(update.id.into_bytes(), encode(old_keys)).await?; tr.commit().await?; return Ok(()); diff --git a/src/server/proto.rs b/src/server/proto.rs index 7ab738b..35fe6ff 100644 --- a/src/server/proto.rs +++ b/src/server/proto.rs @@ -627,6 +627,7 @@ pub async fn handle_mize_message( } let update = Update::from_message(message.clone())?; + println!("UPDATE: {:?}", update.raw); handle_update(update, mutexes, message.origin.clone()).await?; return Ok(()); };