Flowchart — Módulo: biblioteca
Gerado pelo Archaeologist (Reversa) em 2026-05-11
Fluxo Geral
flowchart TD
A([Usuário acessa Biblioteca]) --> B[BibliotecaApi.getObras RTK Query]
B --> C[API /obras: lista de Obra com crc32]
C --> D{Obra já baixada e crc32 igual?}
D -- Sim --> E([Mostra como instalada])
D -- Não --> F([Mostra como disponível para download])
F --> G[Usuário clica em baixar]
G --> H[ObraService.baixarObra]
H --> I{downloadEmAndamento?}
I -- Sim --> J([Erro: aguarde download anterior])
I -- Não --> K[baixarArquivo para cachePath]
K --> L[BibliotecaRepository.importarObra]
L --> M[ATTACH DATABASE cache/OBRA_ID.db AS toImport]
M --> N[SELECT_DIFFERENT_DATA: crc32 diff]
N --> O[upsertMusicas: INSERT ON CONFLICT DO UPDATE]
O --> P[upsertLivroEditoraEdicaoLivro]
P --> Q[disableExemplarObra + createExemplarObra]
Q --> R[DETACH DATABASE]
R --> S([Obra instalada — músicas atualizadas])
Fluxo: Detecção de Diferenças (CRC32)
flowchart TD
A([SELECT_DIFFERENT_DATA]) --> B[SELECT musica FROM toImport LEFT JOIN main.musica ON id_musica]
B --> C{main.id_musica IS NULL?}
C -- Sim --> D([Nova música])
C -- Não --> E{crc32 diferente?}
E -- Sim --> F([Música atualizada])
E -- Não --> G([Sem alteração — pular])
Fluxo: Importar Sugestões da Biblioteca
flowchart TD
A([BibliotecaApi.getRepertorios RTK Query]) --> B[API /repertorios: slugs + crc32]
B --> C[Exibe lista de sugestões disponíveis]
C --> D[Usuário importa sugestão]
D --> E[Api.getSugestaoRepertorioPorSlug]
E --> F[createSugestaoRepertorio INSERT]
F --> G([Sugestão salva localmente])