Skip to content

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)