Arch (Infraestrutura) — Módulo
Gerado pelo Writer (Reversa) em 2026-05-11
doc_level: detalhado
Visão Geral
Infraestrutura central do app: singleton Banco que gerencia o banco SQLite via @op-engineering/op-sqlite, com estratégia por plataforma (iOS/Android/Web), pipeline de migrations automáticas (v8→v15), ATTACH/DETACH seguro e seed inicial de sugestões.
Regras de Negócio
Banco é singleton com lazy initialization + promise deduplication (evita abertura paralela) 🟢
AssetDatabasePreparator.prepare copia o asset para o local de dados na primeira instalação 🟢
- Migrations executadas em sequência ao inicializar —
PRAGMA user_version controla a versão 🟢
- Cada migration pode ter SQL + função JS (ex: migração de dados) 🟢
- ATTACH na web valida
alias com regex ^[A-Za-z_][A-Za-z0-9_]*$ e filename ^[A-Za-z0-9._-]+$ 🟢
- ATTACH no nativo usa
instancia.attach() da biblioteca nativa 🟢
- Após migrations:
BibliotecaSugestoesRepertorioRepository.popularSugestoesIniciais() 🟢
Migrations Conhecidas
| Versão |
Descrição |
| v8 |
Cria tabelas repertorio e item_repertorio |
| v9 |
ADD musica.informacoes |
| v10 |
ADD repertorio.slug + data_edicao |
| v11 |
ADD musica.rotulos |
| v12 |
(não lida) |
| v13 |
(sugestao_repertorio — inferido) |
| v14 |
(não lida) |
| v15 |
Tabela liturgia_cache |
| Plataforma |
databasePath |
cachePath |
| iOS |
IOS_LIBRARY_PATH |
Caches/ |
| Android |
undefined (padrão op-sqlite) |
../cache/ |
| Web |
undefined (OPFS/IndexedDB) |
virtual |
Rastreabilidade de Código
| Arquivo |
Função / Classe |
Cobertura |
src/arch/persistence/Banco.ts |
Banco, BancoHooks, WebBancoHooks, MobileBancoHooks |
🟢 |
src/arch/persistence/AssetDatabasePreparator.ts |
prepare |
🟡 |
src/arch/persistence/MigrationsRepository.ts |
runMigrations |
🟡 |
src/arch/persistence/platform/PersistencePlatformStrategies.ts |
createPersistencePlatformStrategy |
🟢 |
Dependências Externas
| Dependência |
Uso |
@op-engineering/op-sqlite |
SQLite engine — iOS/Android/Web |
react-native Platform |
Seleção de estratégia por plataforma |