Geek Social — Documentação
Banco de dadosTables

post_comments

Comentários em posts (planos, sem aninhamento).

Comentários em posts. Sem aninhamento (sem reply-to-comment) por design — feed simples, sem threads. Cada comment é só texto, sem mídia.

Colunas

ColunaTipoNullableDefault
id uuidNOT NULLgen_random_uuid()
post_iduuidNOT NULL
user_iduuidNOT NULL
contenttextNOT NULL
created_attimestampNOT NULLnow()
updated_attimestampNOT NULLnow()

primary key   unique

Funcionalidade dos campos

  • id — UUID, PK
  • post_id — pai (cascade)
  • user_id — autor (cascade). Editar é restrito ao autor; deletar pode ser autor OU dono do post.
  • content — texto livre obrigatório.
  • created_at / updated_atupdated_at muda em edits (UI mostra "editado").

Foreign keys

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

Índices

NomeÚnicoColunasWHERE (parcial)
post_comments_post_created_at_idxnãopost_id, created_at

post_comments_post_created_at_idx ordena cronologicamente os comments de um post (mais antigos primeiro, paginação simples).

Constraints

  • PRIMARY KEY (id)

Permissões de edição/exclusão

  • Autor: pode editar e deletar
  • Dono do post: pode deletar (pra moderar comentários no próprio post), mas não editar (preserva voz do autor)

Implementação no CommentsService.canModify(userId, comment, post).

Padrões de uso

  • AdicionarPOST /posts/:id/comments { content } → INSERT + dispara notificação post_comment ao dono do post (só se autor != dono)
  • EditarPUT /posts/:postId/comments/:id
  • DeletarDELETE /posts/:postId/comments/:id

Tabelas relacionadas

On this page