Skip to content

[FEATURE] API HTTP tem apenas endpoint GET /keys — implementar CRUD completo #142

@ElioNeto

Description

@ElioNeto

Descrição

O servidor HTTP (actix-web) atualmente expõe apenas um endpoint: GET /keys. Não há endpoints para criar, atualizar, deletar ou escanear chaves, limitando severamente a utilidade da API.

Localização

Arquivo: src/api/mod.rs

// Apenas este endpoint:
// GET /keys

// Faltam:
// PUT /keys/{key}      — set
// GET /keys/{key}      — get
// DELETE /keys/{key}   — delete
// GET /keys?prefix=    — scan com prefixo
// GET /stats           — estatísticas

Endpoints necessários

Mínimos para um CRUD funcional:

Método Path Descrição
PUT /keys/{key} Inserir/atualizar valor (body: valor)
GET /keys/{key} Obter valor de uma chave
DELETE /keys/{key} Remover uma chave
GET /keys Listar chaves (suporta ?prefix= e ?limit=)

Estendidos (recomendado):

Método Path Descrição
GET /stats Estatísticas do engine
POST /admin/compact Forçar compaction
POST /admin/flush Forçar flush do memtable

Proposta de implementação

  1. Extrair lógica para handler functions separadas em src/api/handlers.rs
  2. Usar web::resource ou web::scope para organizar as rotas
  3. Integrar com o Engine armazenado no estado da aplicação
  4. Adicionar testes de integração para a API (usando actix_web::test)
  5. Documentar os endpoints no docs/

Critérios de aceite

  • PUT /keys/{key} com body cria/atualiza chave
  • GET /keys/{key} retorna valor ou 404
  • DELETE /keys/{key} deleta chave
  • GET /keys?prefix=foo retorna chaves com prefixo
  • GET /keys?limit=10 respeita limite
  • Testes de integração para cada endpoint
  • Autenticação funciona nos novos endpoints
  • cargo test --all-features passa
  • cargo clippy -- -D warnings passa

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions