Skip to content

Flowchart — Módulo: musicas

Gerado pelo Archaeologist (Reversa) em 2026-05-11


Fluxo Geral do Módulo

flowchart TD
    A([Usuário acessa lista de músicas]) --> B{Filtro ativo?}
    B -- Livro selecionado --> C[findAllBy com id_edicao_livro]
    B -- Nenhum livro --> C
    C --> D{Termo de busca?}
    D -- Não --> E[semTermo: ORDER BY titulo/ordem]
    D -- É número --> F[porIndice: WHERE indice = ?]
    D -- É texto --> G[getDetalhesTermoBusca]
    G --> H[NFKD normalize → remove não-alfanumérico → insere * entre palavras]
    H --> I[FTS5 MATCH ? ORDER BY bm25 50/5]
    E & F & I --> J[LIMIT n+1 para detectar hasNextPage]
    J --> K[Retorna lista paginada + hasNextPage]
    K --> L([Renderiza lista de músicas])

Fluxo: getDetalhesTermoBusca

flowchart TD
    A([termoBusca]) --> B{É número inteiro?}
    B -- Sim --> C([Tipo: índice | valor: parseInt])
    B -- Não --> D[NFKD normalize + toUpperCase]
    D --> E[replace não-alfanumérico por espaço]
    E --> F[trim + split por espaço]
    F --> G[Cada token: adiciona * no final]
    G --> H[Join com espaço]
    H --> I[Remove ** duplos]
    I --> J([Tipo: texto | valor: query FTS5])

Fluxo: Carregamento de uma música

flowchart TD
    A([carregarMusica dispatch]) --> B{id_musica já está no store?}
    B -- Sim --> C([Retorna do cache])
    B -- Não --> D[MusicasRepository.findById]
    D --> E[SELECT musica JOIN cantico_livro JOIN edicao_livro]
    E --> F[Mapeia para InformacoesDetalhadasMusica]
    F --> G[Redux: upsertOne no entityAdapter]
    G --> H([Renderiza tela de música])

Fluxo: Favoritar / Desfavoritar Música

flowchart TD
    A([setFavorita dispatch]) --> B[MusicasFavoritasRepository.update]
    B --> C{Operação OK?}
    C -- Sim --> D[Metricas.favoritarMusica / desfavoritarMusica]
    D --> E[Redux store NÃO atualizado aqui]
    C -- Erro --> F([Toast de erro])

Fluxo: Marcar como Visualizada

flowchart TD
    A([marcarMusicaComoVisualizada dispatch]) --> B[MusicasFavoritasRepository.marcarAsVisualizada]
    B --> C[Metricas.visualizarMusica]
    C --> D[Repertorio padrão 'Visto recentemente': addItem]
    D --> E([Concluído — não bloqueia UI])

Rótulos: DicionarioRotulos

flowchart LR
    A([string de rótulo]) --> B{Pertence a qual categoria?}
    B --> C1[Momento da Missa]
    B --> C2[Tempo Litúrgico]
    B --> C3[Semana Santa]
    B --> C4[Solenidade]
    B --> C5[Festa]
    B --> C6[Sacramento]
    B --> C7[Outro]
    B --> C8[Outro Rito ou Momento]
    B --> C_unk[Desconhecido]
    C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C_unk --> D([RotulosPorCategoriaBuilder.build])