guardian_db/stores/base_store/
noop_index.rs

1use crate::error::GuardianError;
2use crate::ipfs_log::{entry::Entry, log::Log};
3use crate::traits::StoreIndex;
4
5pub struct NoopIndex;
6
7/// Esta é uma função "factory" ou construtor que cria uma nova instância
8/// do NoopIndex.
9pub fn new_noop_index(
10    _public_key: &[u8],
11) -> Box<dyn StoreIndex<Error = GuardianError> + Send + Sync> {
12    Box::new(NoopIndex)
13}
14
15/// Implementação do trait `StoreIndex` para `NoopIndex`.
16/// Aqui é onde a lógica "vazia" é definida.
17impl StoreIndex for NoopIndex {
18    /// Usamos GuardianError como o tipo de erro associado.
19    /// GuardianError implementa std::error::Error.
20    type Error = GuardianError;
21
22    /// Verifica se uma chave existe no índice.
23    fn contains_key(&self, _key: &str) -> std::result::Result<bool, Self::Error> {
24        Ok(false)
25    }
26
27    /// Retorna uma cópia dos dados para uma chave específica como bytes.
28    fn get_bytes(&self, _key: &str) -> std::result::Result<Option<Vec<u8>>, Self::Error> {
29        Ok(None)
30    }
31
32    /// Retorna todas as chaves disponíveis no índice.
33    fn keys(&self) -> std::result::Result<Vec<String>, Self::Error> {
34        Ok(Vec::new())
35    }
36
37    /// Retorna o número de entradas no índice.
38    fn len(&self) -> std::result::Result<usize, Self::Error> {
39        Ok(0)
40    }
41
42    /// Verifica se o índice está vazio.
43    fn is_empty(&self) -> std::result::Result<bool, Self::Error> {
44        Ok(true)
45    }
46
47    /// A função não faz nada e sempre retorna `Ok(())`.
48    fn update_index(
49        &mut self,
50        _oplog: &Log,
51        _entries: &[Entry],
52    ) -> std::result::Result<(), Self::Error> {
53        Ok(())
54    }
55
56    /// Limpa todos os dados do índice.
57    fn clear(&mut self) -> std::result::Result<(), Self::Error> {
58        Ok(())
59    }
60}