Dicionário de Dados — canta-igreja
Gerado pelo Archaeologist (Reversa) em 2026-05-11
Banco SQLite Principal (cantaIgreja.db)
Tabela: musica
| Coluna |
Tipo |
Constraints |
Descrição |
id_musica |
INTEGER |
PK |
Identificador único da música |
titulo |
TEXT |
NOT NULL |
Título da música |
letra |
TEXT |
NOT NULL |
Letra completa da música |
contribuidores |
TEXT (JSON) |
NOT NULL |
{ compositores?: string[], letristas?: string[], musicistas?: string[] } |
midias |
TEXT (JSON) |
NOT NULL |
{ YouTube?: string, YouTubes?: string[], CifraClub?: string, Partitura?: string } |
rotulos |
TEXT (JSON) |
NOT NULL, default '[]' |
Array de strings com rótulos litúrgicos — adicionado em v11 |
informacoes |
TEXT (JSON) |
NOT NULL, default '{}' |
Campo extensível de metadados — adicionado em v9 |
crc32 |
INTEGER |
— |
Checksum para detectar atualizações ao importar obras |
Tabela: musica_busca (FTS5 virtual)
| Coluna |
Tipo |
Descrição |
titulo |
TEXT |
Espelho de musica.titulo |
letra |
TEXT |
Espelho de musica.letra |
rowid |
INTEGER |
FK implícita → musica.id_musica |
Pesos BM25: título = 50, letra = 5
Tabela: livro
| Coluna |
Tipo |
Constraints |
Descrição |
id_livro |
INTEGER |
PK |
Identificador do livro |
titulo |
TEXT |
NOT NULL |
Nome do livro |
Tabela: editora
| Coluna |
Tipo |
Constraints |
Descrição |
id_editora |
INTEGER |
PK |
Identificador da editora |
nome |
TEXT |
NOT NULL |
Nome da editora |
site |
TEXT |
— |
URL do site da editora |
Tabela: edicao_livro
| Coluna |
Tipo |
Constraints |
Descrição |
id_edicao_livro |
INTEGER |
PK |
Identificador da edição |
id_livro |
INTEGER |
FK → livro |
Livro ao qual pertence |
id_editora |
INTEGER |
FK → editora |
Editora responsável |
edicao |
TEXT |
— |
Número/nome da edição |
ano |
TEXT |
— |
Ano de publicação |
descricao |
TEXT |
— |
Descrição da edição |
site |
TEXT |
— |
URL específica desta edição |
detalhes |
TEXT (JSON) |
— |
Objeto livre — contém sigla entre outros campos |
Tabela: cantico_livro
| Coluna |
Tipo |
Constraints |
Descrição |
id_musica |
INTEGER |
FK → musica |
Música referenciada |
id_edicao_livro |
INTEGER |
FK → edicao_livro |
Edição de livro |
indice |
TEXT |
— |
Número/código do cântico no livro (pode ser "23a") |
ordem |
INTEGER |
— |
Ordem de exibição dentro do livro |
Tabela: tipo_repertorio
| Coluna |
Tipo |
Constraints |
Descrição |
id_tipo_repertorio |
INTEGER |
PK AUTOINCREMENT |
— |
tipo |
TEXT |
NOT NULL |
'Padrão' ou 'Usuário' |
descricao |
TEXT |
NOT NULL |
Descrição do tipo |
Dados iniciais:
1 = Padrão (repertórios fixos do sistema)
2 = Usuário (criados pelo usuário)
Tabela: repertorio
| Coluna |
Tipo |
Constraints |
Descrição |
id_repertorio |
INTEGER |
PK AUTOINCREMENT |
Identificador único |
id_tipo_repertorio |
INTEGER |
FK → tipo_repertorio, default 2 |
— |
titulo |
TEXT |
NOT NULL, CHECK (length <= 50) |
Nome do repertório |
resumo |
TEXT |
NOT NULL, default 'Nenhuma música adicionada' |
Descrição gerada |
ordem_musicas |
TEXT (JSON) |
NOT NULL, default '[]' |
Array de id_musica na ordem de exibição |
data_criacao |
TIMESTAMP |
NOT NULL, default CURRENT_TIMESTAMP |
— |
data_ultima_visualizacao |
TIMESTAMP |
— |
— |
data_exclusao |
TIMESTAMP |
default NULL |
Soft-delete: não nulo = excluído |
slug |
TEXT (JSON) |
NULL |
{ referencia: {conta, repertorio}, corrente: {conta, repertorio} } — adicionado em v10 |
data_edicao |
INTEGER |
— |
Unix timestamp da última edição — adicionado em v10 |
metadata |
TEXT (JSON) |
NOT NULL, default '{}' |
{ data?: DateString, dia_liturgico?: {id_romcal, ano} } — adicionado em v14 |
Dados iniciais:
1 = "Músicas favoritas" (tipo Padrão)
2 = "Visto recentemente" (tipo Padrão)
Tabela: item_repertorio
| Coluna |
Tipo |
Constraints |
Descrição |
id_item_repertorio |
INTEGER |
PK AUTOINCREMENT |
— |
id_repertorio |
INTEGER |
FK → repertorio |
Repertório ao qual pertence |
id_musica |
INTEGER |
FK → musica (nullable) |
Música do catálogo (null se for item livre) |
termo |
TEXT |
NULL, CHECK (length <= 300) |
Texto livre (ex.: "Salmo", "Instrumental") |
momento |
TEXT |
NULL, CHECK (length <= 300) |
Momento da celebração (ex.: "Entrada", "Ofertório") |
tonalidade |
TEXT |
NULL |
Tonalidade indicada (ex.: "Lá menor") |
data_inclusao |
TIMESTAMP |
NOT NULL, default CURRENT_TIMESTAMP |
— |
Tabela: sugestao_repertorio
| Coluna |
Tipo |
Constraints |
Descrição |
id_sugestao_repertorio |
INTEGER |
PK |
Identificador único |
id_romcal |
TEXT |
NULL |
Chave romcal do dia litúrgico |
ano_liturgico |
TEXT |
NULL |
Ano litúrgico ('A', 'B', 'C', 'PAR', 'ÍMPAR') |
titulo |
TEXT |
NOT NULL |
Título da sugestão |
resumo |
TEXT |
NOT NULL |
Descrição curta |
itens |
TEXT (JSON) |
NOT NULL, default '[]' |
Array de ItemSugestaoRepertorio |
metadata |
TEXT (JSON) |
default '{}' |
{ referencias: [], ... } |
crc32 |
INTEGER |
NOT NULL |
Checksum da sugestão |
Índice: (id_romcal, ano_liturgico) — acesso por dia litúrgico + ciclo
Tabela: liturgia_cache
| Coluna |
Tipo |
Constraints |
Descrição |
data |
TEXT |
PK |
Data no formato YYYY-MM-DD |
payload |
TEXT |
NOT NULL |
JSON completo da resposta DANCRF |
atualizado_em |
INTEGER |
NOT NULL |
Unix timestamp da última atualização |
Tabela: exemplar_biblioteca (gerenciada em cantaIgreja.db)
| Coluna |
Tipo |
Constraints |
Descrição |
id_exemplar |
INTEGER |
PK |
— |
id_obra |
INTEGER |
— |
Referência externa (API) |
titulo |
TEXT |
— |
Título da obra |
descricao |
TEXT |
— |
Descrição |
crc32 |
INTEGER |
— |
Checksum do arquivo SQLite baixado |
ativo |
INTEGER |
— |
1 = exemplar ativo, 0 = desativado |
Banco de Assets Embarcados
cantaIgreja.db (asset somente-leitura)
Contém o catálogo completo de músicas, livros, edições e cânticos por livro. É copiado para o local de dados na instalação e pode ser substituído por obras baixadas da API (upsert atômico).
repertorios.db (asset somente-leitura)
Contém a coleção inicial de sugestões de repertório (sugestao_repertorio com item_repertorio nested em JSON). É usado como semente inicial se a tabela local estiver vazia. Versões atualizadas são baixadas da API.
Tipos de Domínio (TypeScript)
Primitivos Marcados (Branded Types)
| Tipo |
Definição |
Uso |
DateString |
string & { __brand: 'YYYY-MM-DD' } |
Datas de repertório e sugestões |
Enums
| Enum |
Namespace |
Valores |
TamanhoFonte |
configuracoes |
NORMAL, MODERADO, GRANDE |
EstiloRefrao |
configuracoes |
NEGRITO, ITALICO, CAIXA_ALTA |
FonteMusica |
configuracoes |
PADRAO, SERIFADO, MONOESPACADA |
Tema |
configuracoes |
CLARO, ESCURO, CLARO_LEGADO, CLARO_ALTERNATIVO |
CorLiturgica |
liturgia / repertorio |
GREEN, PURPLE, RED, WHITE, ROSE, GOLD, BLACK, DESCONHECIDO |
CicloLiturgico |
liturgia / repertorio |
'A', 'B', 'C', 'PAR', 'ÍMPAR' |
IdentificadorCategoriaRotulos |
musicas |
8 categorias litúrgicas (Momento da Missa, Tempo Litúrgico, ...) |
RepertorioSlug |
repertorios |
{ referencia: ReferenciaRepertorioSlug, corrente: ReferenciaRepertorioSlug } |
Chaves de Armazenamento MMKV
| Store MMKV |
Chave |
Tipo |
Módulo |
@cantaIgreja/configuracoes |
fonte |
string (FonteMusica) |
configuracoes |
@cantaIgreja/configuracoes |
tamanho |
string (TamanhoFonte) |
configuracoes |
@cantaIgreja/configuracoes |
estiloRefrao |
string (EstiloRefrao) |
configuracoes |
@cantaIgreja/configuracoes |
tema |
string (Tema) |
configuracoes |
@cantaIgreja/configuracoes/aplicacao |
onboardingModal |
boolean |
configuracoes |
@cantaIgreja/usuario |
@cantaIgreja/usuario |
JSON (UsuarioLogado) |
auth |
Chaves de Armazenamento Keychain/localStorage
| Chave |
Tipo |
Módulo |
| (username=slug do usuário) |
JSON (Credenciais) |
auth |
@cantaIgreja/auth/credenciais |
JSON (GenericPassword) |
auth (web) |
Versões do Schema (PRAGMA user_version)
| Versão |
Migration |
Descrição |
| 8 |
v8_repertorio |
Cria tabelas tipo_repertorio, repertorio, item_repertorio com dados iniciais |
| 9 |
v9_musica_informacoes |
ADD COLUMN musica.informacoes JSON |
| 10 |
v10_slug_repertorio |
ADD COLUMN repertorio.slug JSON + repertorio.data_edicao INTEGER |
| 11 |
v11_rotulos_musica |
ADD COLUMN musica.rotulos JSON default '[]' |
| 12 |
v12_forcar_baixar_musicas |
Força re-download das músicas (crc32 reset) |
| 13 |
v13_sugestao_repertorio |
Cria tabela sugestao_repertorio + índice por id_romcal/ano_liturgico |
| 14 |
v14_metadata_repertorio |
ADD COLUMN repertorio.metadata JSON default '{}' |
| 15 |
v15_liturgia_cache |
Cria tabela liturgia_cache (data TEXT PK, payload TEXT, atualizado_em INT) |