Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

task(chat): Vinculando um chat a um item #129

Conversation

314dro
Copy link
Collaborator

@314dro 314dro commented Jan 8, 2025

Descrição do Pull Request

Este Pull Request implementa melhorias no sistema de chat da aplicação AcheiUnB, incluindo a associação direta das salas de chat aos itens cadastrados na plataforma. Agora, é possível criar salas de chat vinculadas a itens específicos, garantindo um fluxo claro e organizado para a comunicação entre os usuários.


O que foi feito?

1. Vinculação de Salas de Chat a Itens

  • Adicionado um campo item no modelo ChatRoom, que agora é uma chave estrangeira para o modelo Item.
  • Atualizado o fluxo de criação de salas de chat para exigir o ID de um item (item_id) durante a criação.

2. Ajustes nos Serializers

  • Adicionado o campo item_id no serializer de ChatRoom para permitir a entrada do ID do item.
  • Adicionado o campo item_name para retornar o nome do item associado à sala de chat na resposta.

3. Validações no Backend

  • Verificação se o item_id fornecido existe no banco de dados antes de criar a sala.
  • Garantido que todos os campos obrigatórios (participant_1, participant_2 e item_id) sejam fornecidos no payload.

4. Mensagens de Erro Claras

  • Retorno de mensagens de erro apropriadas para cenários de validação, como:
    • Item não encontrado.
    • Campos obrigatórios ausentes.

Checklist

  • Meu código segue as diretrizes do projeto.
  • Adicionei testes para cobrir as mudanças.
  • Atualizei a documentação, se necessário.

Como Testar?

Cenário 1: Criar uma Sala de Chat

  1. Endpoint: POST /api/chat/chatrooms/
  2. Payload:
    {
        "participant_1": 1,
        "participant_2": 2,
        "item_id": 1
    }

Resposta Esperada (Sucesso):

{
    "id": 5,
    "participant_1": 1,
    "participant_1_username": "user1",
    "participant_2": 2,
    "participant_2_username": "user2",
    "item_id": 1,
    "item_name": "Carteira Perdida",
    "created_at": "2025-01-08T22:05:00Z"
}

Resposta Esperada (Erro - Item Não Encontrado):

{
    "item_id": ["O item associado não foi encontrado."]
}

Cenário 2: Listar Salas de Chat

  1. Endpoint: GET /api/chat/chatrooms/
  2. Resposta Esperada:
    [
        {
            "id": 5,
            "participant_1": 1,
            "participant_1_username": "user1",
            "participant_2": 2,
            "participant_2_username": "user2",
            "item_id": 1,
            "item_name": "Carteira Perdida",
            "created_at": "2025-01-08T22:05:00Z"
        }
    ]

Cenário 3: Erro ao Criar Sala de Chat

  1. Exemplo de Payload Incompleto:

    {
        "participant_1": 1,
        "participant_2": 2
    }
  2. Resposta Esperada:

    {
        "error": "Os campos participant_1, participant_2 e item_id são obrigatórios."
    }

Cenário 4: Teste de Fluxo Completo

  1. Crie um item utilizando o endpoint POST /api/items/.
  2. Utilize o ID do item criado (item_id) para criar uma sala de chat com POST /api/chat/chatrooms/.
  3. Liste as salas de chat utilizando GET /api/chat/chatrooms/ para verificar a criação correta.

Observações

Essas mudanças foram testadas localmente e no ambiente de desenvolvimento. Qualquer feedback ou problema adicional pode ser reportado nos comentários deste PR.

@314dro 314dro added enhancement New feature or request task Tasks related to code or requirements of the project back-end Related to back-end development labels Jan 8, 2025
@314dro 314dro added this to the Sprint 9 milestone Jan 8, 2025
@314dro 314dro self-assigned this Jan 8, 2025
@314dro 314dro linked an issue Jan 8, 2025 that may be closed by this pull request
4 tasks
Copy link
Collaborator

@Potatoyz908 Potatoyz908 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excelente trabalho!

Copy link
Collaborator

@pedroeverton217 pedroeverton217 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice Work!!

@314dro 314dro merged commit f1f5c27 into main Jan 9, 2025
@314dro 314dro deleted the 115/task/vincular-um-chat-específico-a-um-item-cadastrado-na-plataforma branch January 9, 2025 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
back-end Related to back-end development enhancement New feature or request task Tasks related to code or requirements of the project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Task(chat): Vincular um chat específico a um item cadastrado na plataforma
3 participants