Descrição
Adiciona novos membros a um grupo de amigos existente. Qualquer membro ativo do grupo pode convidar novos membros, não apenas o dono do grupo.Autenticação
Esta rota requer autenticação JWT. O usuário deve ser membro ativo do grupo para poder adicionar novos membros.
Path Parameters
ID único do grupo onde os membros serão adicionados
Request Body
Lista de emails dos usuários a serem adicionados ao grupo
Response
Indica se a operação foi bem-sucedida
Mensagem descritiva sobre o resultado da operação
Regras de Negócio
Permissões
- Qualquer membro pode adicionar novos membros (não apenas o dono)
- Usuário deve ser membro ativo (
isActive = 1) - Usuário deve existir no grupo
Validações
Lista de Emails
- Array obrigatório e não-vazio
- Emails devem ter formato válido
- Duplicados são automaticamente ignorados
Limites do Grupo
- Verifica limite de
maxMembersdo grupo - Conta membros ativos atuais + novos membros
- Rejeita operação se exceder limite
Membros Existentes
- Emails já presentes no grupo são ignorados silenciosamente
- Não gera erro para membros duplicados
- Log de debug registra tentativas de duplicação
Comportamentos
Processamento
- Emails são convertidos para lowercase
- Inserção individual com tratamento de erros
- Operação continua mesmo se alguns emails falharem
Timestamps
addedByEmail: Email de quem fez o convitejoinedAt: Timestamp da adiçãoupdatedAtdo grupo é atualizado
Notificações
- Sistema pode ser estendido para notificar novos membros
- Logs de auditoria para rastreamento
Casos de Uso
Convite em Lote
Tratamento de Erros
Verificação Prévia
Limitações
Técnicas
- Máximo de 50 emails por requisição (recomendado)
- Timeout de 30 segundos para operações grandes
- Rate limiting por usuário
Funcionais
- Não verifica se emails existem no sistema
- Usuários inexistentes aparecem no grupo mas sem streak
- Sem sistema de confirmação/convite
Próximos Passos
Após adicionar membros:- Verificar adição:
GET /streaks/groups/:groupId/ranking - Gerenciar membros: Implementar remoção se necessário
- Notificar: Comunicar novos membros por email/push
Notas de Implementação
Database
- Tabela:
friendGroupMembers - Índices:
(groupId, memberEmail)único - Foreign key:
groupId→friendGroups.groupId
Performance
- Operação em batch quando possível
- Transações para consistência
- Logs detalhados para debugging
