Geek Social — Documentação
Banco de dadosTables

message_reactions

Reações em mensagens de chat (emojis livres).

Reações em mensagens. Diferente de post_reactions, aqui o emoji é livre (string até 16 chars). Cada usuário pode reagir com múltiplos emojis na mesma mensagem (não está limitado a 1 reação como nos posts), mas cada par (message_id, user_id, emoji) é único — não dá pra reagir com o mesmo emoji 2x.

Colunas

ColunaTipoNullableDefault
id uuidNOT NULLgen_random_uuid()
message_iduuidNOT NULL
user_iduuidNOT NULL
emojivarcharNOT NULL
created_attimestampNOT NULLnow()

primary key   unique

Funcionalidade dos campos

  • id — UUID, PK
  • message_id — FK pra messages (cascade)
  • user_id — FK pra users (cascade)
  • emoji — string até 16 chars. Suporta emojis multi-byte (ex: 👨‍🚀 family). Backend não normaliza Unicode (variantes podem fragmentar contagem).
  • created_at — momento da reação

Foreign keys

Coluna(s)ReferênciaON DELETEON UPDATE
message_idmessages.idcascadeno action
user_idusers.idcascadeno action

Índices

NomeÚnicoColunasWHERE (parcial)
message_reactions_uniquesimmessage_id, user_id, emoji
message_reactions_message_idxnãomessage_id

Detalhes:

  • message_reactions_unique(message_id, user_id, emoji) impede mesma reação repetida do mesmo user
  • message_reactions_message_idx — usado pra carregar todas reações de uma mensagem rapidamente

Constraints

  • PRIMARY KEY (id)

Agregação na UI

Frontend agrupa por emoji: { '🎉': [user1, user2], '👀': [user3] }. Mostra com count e tooltip de quem reagiu.

Padrões de uso

  • ReagirPOST /chat/messages/:id/react { emoji } → INSERT
  • RemoverDELETE /chat/messages/:id/react?emoji=... → DELETE
  • Toggle — frontend faz POST e se 409 (já existe), faz DELETE em vez

Tabelas relacionadas

On this page