Skip to content

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])