add db method to remove a post

This commit is contained in:
glyph 2022-07-07 09:03:40 +01:00
parent 801934e5aa
commit 5f115617ef
1 changed files with 15 additions and 3 deletions

View File

@ -100,8 +100,8 @@ impl Database {
/// Remove a peer from the database, as represented by the given public
/// key.
pub fn remove_peer(&self, public_key: &str) -> Result<Option<IVec>> {
self.peer_tree.remove(&public_key)
pub fn remove_peer(&self, public_key: &str) -> Result<()> {
self.peer_tree.remove(&public_key).map(|_| ())
}
/// Get a list of all peers in the peer tree. The public key of each peer
@ -120,6 +120,8 @@ impl Database {
/// the public key of the peer who authored the post and the key of the
/// post itself, separated by an underscore. The Post is serialized as
/// bincode before the database entry is inserted.
///
/// This method can also be used to update an existing database entry.
pub fn add_post(&self, public_key: &str, post: Post) -> Result<Option<IVec>> {
let post_key = format!("{}_{}", public_key, post.key);
let post_bytes = bincode::serialize(&post).unwrap();
@ -175,5 +177,15 @@ impl Database {
Ok(post)
}
// TODO: remove_post
/// Remove a single post from the post tree, authored by the given public
/// key and defined by the given message ID.
pub fn remove_post(&self, public_key: &str, msg_id: &str) -> Result<()> {
let post_key = format!("{}_{}", public_key, msg_id);
// .remove() would ordinarily return the value of the deleted entry
// as an Option, returning None if the post_key was not found.
// We don't care about the value of the deleted entry so we simply
// map the Option to ().
self.post_tree.remove(post_key.as_bytes()).map(|_| ())
}
}