Skip to content

Fase 3: SQLite + Persistência + CRUD Admin #3

@DavyMassoneto

Description

@DavyMassoneto

User Story

Como operador do Kestrel, quero cadastrar contas Claude e API keys via Admin API para que o proxy possa rotear requests entre múltiplas contas.

Escopo

SQLite (adapter/sqlite/)

  • db.go — Conexão: 1 writer + N readers, WAL, busy_timeout
  • migrations.go — Auto-migration no startup
  • account_repo.go — Implementa AccountFinder, AccountStatusWriter, AccountStore
  • apikey_repo.go — Implementa APIKeyFinder, APIKeyStore
  • migrations/001_accounts.sql, 002_apikeys.sql

Crypto (adapter/crypto/)

  • aes.go — AES-256-GCM encrypt/decrypt para API keys at rest
  • Interface Encryptor definida no sqlite repo (consumidor)

Admin Use Cases (usecase/)

  • admin_account.go — Create, Update, Delete, Reset
  • admin_apikey.go — Create, Revoke

Admin Handler (adapter/handler/)

  • admin.go — CRUD endpoints REST

Critérios de aceite

  • CRUD de contas funcional via curl
  • CRUD de API keys funcional via curl
  • API keys encriptadas no SQLite (AES-256-GCM)
  • Migrations automáticas no startup
  • Coverage 100% em usecase/, 90%+ em adapter/sqlite/
  • Testes de integração com SQLite in-memory

Referência

  • docs/02-ARCHITECTURE.md
  • docs/05-ACCOUNT-ROTATION.md (schema SQL)
  • docs/07-API-ENDPOINTS.md (admin endpoints)
  • docs/08-IMPLEMENTATION-PHASES.md — Fase 3

Metadata

Metadata

Assignees

No one assigned

    Labels

    phase-2Fase 2: Domínio + Tradução

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions