(&self, key: K)
| 177 | /// remove from storage and persist to disk |
| 178 | #[inline] |
| 179 | pub async fn remove(&self, key: K) -> Result<(), SessionResult> { |
| 180 | match self.collection.get(&key) { |
| 181 | Some(doc) => { |
| 182 | |
| 183 | if !self.off_disk || !self.off_reporter { |
| 184 | let query = RQuery::<K, Doc>::Remove(key.clone()); |
| 185 | |
| 186 | if !self.off_disk { |
| 187 | if let Err(e) = self.wal_session.log(bincode::serialize(&query).unwrap()).await { |
| 188 | return Err(e); |
| 189 | } |
| 190 | } |
| 191 | |
| 192 | if !self.off_reporter { |
| 193 | let _ = self.reporter_session.dispatch(Event::Query(query)).await; |
| 194 | } |
| 195 | |
| 196 | } |
| 197 | |
| 198 | // remove from hash_index |
| 199 | self.hash_index.remove(doc.value()); |
| 200 | |
| 201 | // remove from view |
| 202 | if let Some(view_name) = doc.filter() { |
| 203 | self.tag_index.remove_from_view(&view_name, &key) |
| 204 | } |
| 205 | |
| 206 | // remove from invertedIndex |
| 207 | if let Some(content) = doc.value().get_content() { |
| 208 | let _ = self.inverted_index.remove(key.clone(), content).await; |
| 209 | } |
| 210 | |
| 211 | // remove from tag_index |
| 212 | self.tag_index.remove(&key, doc.value()); |
| 213 | |
| 214 | // remove to range |
| 215 | self.range_index.remove(&key, doc.value()); |
| 216 | |
| 217 | } |
| 218 | None => return Ok(()), |
| 219 | } |
| 220 | |
| 221 | self.collection.remove(&key); |
| 222 | |
| 223 | Ok(()) |
| 224 | } |
| 225 | |
| 226 | /// gets documents |
| 227 | #[inline] |
no test coverage detected