StoreIndex

Trait StoreIndex 

Source
pub trait StoreIndex: Send + Sync {
    type Error: Error + Send + Sync + 'static;

    // Required methods
    fn contains_key(&self, key: &str) -> Result<bool, Self::Error>;
    fn get_bytes(&self, key: &str) -> Result<Option<Vec<u8>>, Self::Error>;
    fn keys(&self) -> Result<Vec<String>, Self::Error>;
    fn len(&self) -> Result<usize, Self::Error>;
    fn is_empty(&self) -> Result<bool, Self::Error>;
    fn update_index(
        &mut self,
        log: &Log,
        entries: &[Entry],
    ) -> Result<(), Self::Error>;
    fn clear(&mut self) -> Result<(), Self::Error>;

    // Provided methods
    fn get_entries_range(
        &self,
        _start: usize,
        _end: usize,
    ) -> Option<Vec<Entry>> { ... }
    fn get_last_entries(&self, _count: usize) -> Option<Vec<Entry>> { ... }
    fn get_entry_by_cid(&self, _cid: &Cid) -> Option<Entry> { ... }
    fn supports_entry_queries(&self) -> bool { ... }
}
Expand description

Index contém o estado atual de uma store. Ele processa o log de operações (OpLog) para construir a visão mais recente dos dados, implementando a lógica do CRDT.

Required Associated Types§

Source

type Error: Error + Send + Sync + 'static

Required Methods§

Source

fn contains_key(&self, key: &str) -> Result<bool, Self::Error>

Verifica se uma chave existe no índice. Método seguro que não requer acesso aos dados em si.

Source

fn get_bytes(&self, key: &str) -> Result<Option<Vec<u8>>, Self::Error>

Retorna uma cópia dos dados para uma chave específica como bytes. Método seguro que funciona com qualquer implementação de sincronização.

Source

fn keys(&self) -> Result<Vec<String>, Self::Error>

Retorna todas as chaves disponíveis no índice. Útil para iteração e operações de listagem.

Source

fn len(&self) -> Result<usize, Self::Error>

Retorna o número de entradas no índice.

Source

fn is_empty(&self) -> Result<bool, Self::Error>

Verifica se o índice está vazio.

Source

fn update_index( &mut self, log: &Log, entries: &[Entry], ) -> Result<(), Self::Error>

Atualiza o índice aplicando novas entradas do log de operações. Recebe &mut self pois este método modifica o estado do índice.

Source

fn clear(&mut self) -> Result<(), Self::Error>

Limpa todos os dados do índice. Útil para reset ou reconstrução completa.

Provided Methods§

Source

fn get_entries_range(&self, _start: usize, _end: usize) -> Option<Vec<Entry>>

Retorna um range de entradas completas (se suportado pelo índice).

Este método opcional permite que índices que mantêm Entry completas exponham acesso direto otimizado para queries de range.

§Argumentos
  • start - Índice inicial (inclusivo)
  • end - Índice final (exclusivo)
§Retorna

Some(Vec<Entry>) se o índice suporta acesso direto a Entry None se o índice não suporta ou range inválido

§Performance
  • O(1) para validação de range
  • O(end - start) para coleção dos resultados
  • Evita deserialização de bytes para Entry
Source

fn get_last_entries(&self, _count: usize) -> Option<Vec<Entry>>

Retorna as últimas N entradas (se suportado pelo índice).

Otimização comum para EventLogStore onde frequentemente queremos as entradas mais recentes.

§Argumentos
  • count - Número de entradas a retornar
§Retorna

Some(Vec<Entry>) se o índice suporta acesso direto None se não suportado

Source

fn get_entry_by_cid(&self, _cid: &Cid) -> Option<Entry>

Retorna uma Entry específica por CID (se suportado pelo índice).

Permite busca O(1) ou O(log n) por CID ao invés de busca linear.

§Argumentos
  • cid - Content Identifier da entrada desejada
§Retorna

Some(Entry) se encontrada e suportada None se não encontrada ou não suportada

Source

fn supports_entry_queries(&self) -> bool

Verifica se o índice suporta queries otimizadas com Entry completas.

Permite que o código cliente determine se pode usar os métodos opcionais de otimização.

Implementors§

Source§

impl StoreIndex for BaseIndex

Implementação do trait StoreIndex para BaseIndex.

Source§

impl StoreIndex for NoopIndex

Implementação do trait StoreIndex para NoopIndex. Aqui é onde a lógica “vazia” é definida.

Source§

impl StoreIndex for DocumentIndex

Source§

impl StoreIndex for EventIndex

Implementação do trait StoreIndex para EventIndex.

Source§

impl StoreIndex for KvIndex

Source§

impl StoreIndex for KeyValueIndex