Skip to content

[Backend] Botão de registro de interesse #925

@folhesgabriel

Description

@folhesgabriel

Feature Request

Description

Esta funcionalidade permitirá aos usuários se inscreverem para receber notificações sobre atualizações em tabelas específicas. Isso requer a criação da infraestrutura de backend para armazenar e gerenciar essas inscrições. Envolve duas partes principais:

  1. Modelagem de Dados: Criação de um modelo de banco de dados para armazenar a relação entre um usuário e uma tabela à qual ele está inscrito.
  2. API REST: Criação de um endpoint de API para permitir que o frontend crie e gerencie essas inscrições.

Use Case

Um usuário deseja ser notificado sempre que um conjunto de dados específico (tabela) em que ele confia para sua análise for atualizado. Ele poderia ir para a página da tabela e clicar em um botão "Assinar atualizações". Quando uma nova versão dos dados for publicada, ele receberá uma notificação, permitindo-lhe acessar imediatamente os dados mais recentes sem ter que verificar manualmente as atualizações.

Proposed Solution

1. Modelagem de Dados para Inscrições

  • Crie um novo aplicativo Django chamado notifications para encapsular toda a lógica relacionada.
  • Dentro deste aplicativo, defina um novo modelo TableUpdateSubscription em models.py.
  • O modelo terá pelo menos duas ForeignKeys: uma para o modelo User e outra para o modelo Table.
  • Uma UniqueConstraint será aplicada ao modelo para garantir que um usuário não possa se inscrever na mesma tabela mais de uma vez.
  • Adicione o novo aplicativo notifications a INSTALLED_APPS nas configurações do projeto.
  • Execute python manage.py makemigrations e python manage.py migrate para aplicar as alterações do esquema do banco de dados.

2. API REST para Gerenciamento de Inscrições

  • Crie um novo endpoint de API REST (por exemplo, /api/v1/table-subscriptions/) que responda a requisições POST para criar uma nova inscrição.
  • Usando Django REST Framework, crie um TableUpdateSubscriptionSerializer em um arquivo serializers.py dentro do aplicativo notifications. Este serializador validará os dados de entrada (por exemplo, table_id).
  • Em views.py, crie uma APIView para lidar com a requisição POST. A view irá:
    • Usar o serializador para validar os dados da requisição.
    • Associar o usuário atualmente autenticado (request.user) à inscrição.
    • Salvar a nova instância de TableUpdateSubscription no banco de dados.
  • Crie um arquivo urls.py no aplicativo notifications para registrar a nova view e seu padrão de URL correspondente, e inclua-o no urls.py principal do projeto.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions