Editar Repertório — Design Técnico
Gerado pelo Writer (Reversa) em 2026-05-11
Fluxos
Editar título
atualizarRepertorio(id, titulo)
→ Validação: trim; 1–50 chars
→ RepertoriosRepository.updateRepertorio(id, titulo)
→ UPDATE repertorio SET titulo = ? WHERE id_repertorio = ?
→ Dispatch: updateOne no EntityAdapter
Adicionar música
adicionarMusicaAoRepertorio(id_repertorio, id_musica)
→ RepertoriosRepository.createItemRepertorio({ id_repertorio, id_musica })
→ INSERT INTO item_repertorio → retorna id_item_repertorio
→ Lê ordem_musicas atual → push(id_item_repertorio)
→ RepertoriosRepository.updateOrdemMusicas(id_repertorio, novaOrdem)
→ Dispatch: atualiza itens no store
→ Metricas.musicaAdicionadaRepertorio(id_musica)
Remover item
removerItemDoRepertorio(id_item_repertorio, id_repertorio)
→ RepertoriosRepository.deleteItemRepertorio(id_item_repertorio)
→ Lê ordem_musicas atual → filter(id !== id_item_repertorio)
→ RepertoriosRepository.updateOrdemMusicas(id_repertorio, ordemFiltrada)
→ Dispatch: atualiza itens no store
Editar momento/tonalidade
atualizarItemRepertorio(id_item, { momento?, tonalidade? })
→ trim(momento), trim(tonalidade)
→ RepertoriosRepository.updateItemRepertorio(id_item, dados)
→ UPDATE item_repertorio SET momento = ?, tonalidade = ? WHERE id_item_repertorio = ?
→ Dispatch: atualiza item no store
Contrato de Dados
// ItemRepertorio
{
id_item_repertorio: number,
id_repertorio: number,
id_musica?: number, // mutuamente exclusivo com termo
termo?: string, // max 300 chars
momento?: string, // trimmed
tonalidade?: string // trimmed
}
Dependências
| Dependência | Papel |
|---|---|
RepertoriosRepository.updateRepertorio |
UPDATE título |
RepertoriosRepository.createItemRepertorio |
INSERT item |
RepertoriosRepository.deleteItemRepertorio |
DELETE item |
RepertoriosRepository.updateItemRepertorio |
UPDATE momento/tonalidade |
RepertoriosRepository.updateOrdemMusicas |
UPDATE array JSON de ordem |
| Redux EntityAdapter | Cache in-memory dos itens |