Skip to content

Livros — Design Técnico

Gerado pelo Writer (Reversa) em 2026-05-11 doc_level: detalhado

Interface

Redux Store

Símbolo Assinatura Retorno Observação
carregarLivros () ThunkAction Busca todos os livros; armazena no EntityAdapter
selecionarLivro (id_edicao_livro: number \| undefined) Action Define filtro de livro no store

Repository (src/repository/LivrosRepository.ts)

Símbolo Assinatura Retorno Confiança
findAll () Promise<EdicaoLivro[]> 🟢
findById (id: number) Promise<EdicaoLivro> 🟢

Esquema de Dados (SQL inferido)

livro (
  id_livro  INTEGER PRIMARY KEY,
  titulo    TEXT NOT NULL
)

editora (
  id_editora  INTEGER PRIMARY KEY,
  nome        TEXT NOT NULL,
  site        TEXT
)

edicao_livro (
  id_edicao_livro  INTEGER PRIMARY KEY,
  id_livro         INTEGER REFERENCES livro(id_livro),
  id_editora       INTEGER REFERENCES editora(id_editora),
  edicao           TEXT,
  ano              INTEGER,
  descricao        TEXT,
  site             TEXT,
  detalhes         TEXT  -- JSON: { "sigla": "CE", ... }
)

cantico_livro (
  id_musica        INTEGER,
  id_edicao_livro  INTEGER,
  indice           TEXT,  -- pode ser alfanumérico ("23a")
  ordem            INTEGER
)

🟡 Schema inferido das queries; não confirmado por DDL explícito.

Fluxo Principal: Listagem de Livros

carregarLivros()
  → LivrosRepository.findAll()
      → SELECT edicao_livro.*, livro.titulo, editora.nome,
               edicao_livro.detalhes ->> 'sigla' AS sigla
          FROM edicao_livro
          JOIN livro ON edicao_livro.id_livro = livro.id_livro
          JOIN editora ON edicao_livro.id_editora = editora.id_editora
          ORDER BY livro.titulo, edicao_livro.edicao
  → Dispatch: setAll no EntityAdapter
  → Componente renderiza lista de EdicaoLivro com sigla

Fluxo: Seleção de Livro como Filtro

Usuário seleciona EdicaoLivro
  → selecionarLivro(id_edicao_livro) → Redux state: { livroSelecionado: id }
  → Módulo de Músicas lê livroSelecionado no store
  → Adiciona WHERE cantico_livro.id_edicao_livro = ? em todas as strategies de busca

Dependências

Módulo Papel
Módulo Músicas Consome id_edicao_livro como filtro de busca
Módulo Biblioteca Atualiza livros via importação de obras
Redux EntityAdapter Cache in-memory das EdicaoLivro