Home | Escopo | Processo | Mockups | Configuração | Arquitetura | Gerência | BD | Qualidade | Frontend | Backend |
---|
Organização do Backend
Uma boa organização do backend é essencial para garantir escalabilidade, manutenção e clareza no código. Um padrão amplamente utilizado é a separação em Model, Controller e Service, cada um com responsabilidades bem definidas. Essa abordagem permite que o código seja modular e facilite a colaboração em equipe.
- Model: Responsável por representar os dados e gerenciar a interação com o banco de dados.
- Controller: Gerencia as requisições e define o fluxo entre as camadas.
- Service: Contém a lógica de negócios, separando regras e processos das demais camadas.
Abaixo, detalhamos cada uma dessas camadas.
Models
Os modelos representam as entidades do sistema e são usados para armazenar dados essenciais, como informações de administradores, feedbacks, postagens e pontos de interesse.
Admin
O modelo Admin representa os administradores do sistema, responsáveis por realizar autenticação e gerenciar operações administrativas.
Atributos
- name (String): Nome do administrador.
- username (String): Nome de usuário usado para login.
- password (String): Senha para autenticação.
Feedback
O modelo Feedback representa o feedback dado a um post no sistema, permitindo indicar curtidas e comentários.
Atributos
- hasLiked (boolean): Indica se o post foi curtido.
- comment (String): Comentário deixado como feedback.
PointOfInterest
O modelo PointOfInterest representa um Ponto de Interesse no sistema, contendo informações sobre a localização e descrição do ponto.
Atributos
- id (String): Identificador único do Ponto de Interesse.
- titulo (String): Título ou nome do Ponto de Interesse.
- descricao (String): Descrição detalhada do Ponto de Interesse.
- latitude (String): Latitude da localização do Ponto de Interesse.
- longitude (String): Longitude da localização do Ponto de Interesse.
Post
O modelo Post representa uma postagem no sistema, contendo informações sobre o conteúdo, categorias, feedbacks e pontos de interesse associados.
Atributos
- title (String): Título da postagem.
- category (List): Lista de categorias associadas à postagem.
- description (String): Descrição detalhada da postagem.
- image (String, opcional): URL de uma imagem associada à postagem.
- feedbacks (List): Lista de feedbacks dados à postagem.
- pointOfInterest (PointOfInterest, opcional): Ponto de interesse associado à postagem.
- id (String): Identificador único da postagem.
Services
AuthService
O AuthService
é responsável por autenticar administradores. Ele implementa o UserDetailsService
para carregar as informações do administrador e permitir a autenticação.
-
Método:
loadUserByUsername(String username)
Carrega um administrador a partir do banco de dados pelo nome de usuário fornecido. Retorna um objetoUserDetails
para a autenticação.
PointOfInterestService
O PointOfInterestService
gerencia a criação de pontos de interesse no sistema. Ele interage com o banco de dados para armazenar informações relacionadas aos pontos de interesse.
-
Método:
createPointOfInterest(PointOfInterest pointOfInterest)
Cria e insere um ponto de interesse no banco de dados, incluindo informações como título, descrição, latitude e longitude.
PostService
O PostService
é responsável por gerenciar postagens. Ele permite a criação, recuperação, atualização e exclusão de postagens, além de permitir adicionar feedbacks e associar pontos de interesse.
-
Método:
getPostsByCategory(String category)
Retorna uma lista de postagens ativas, filtradas pela categoria fornecida. -
Método:
getAllPosts()
Retorna todas as postagens ativas. -
Método:
createPost(Post post)
Cria e insere uma nova postagem no banco de dados, com a possibilidade de associar um ponto de interesse. -
Método:
addFeedbackToPost(String postId, Feedback feedback)
Adiciona um feedback a uma postagem específica. -
Método:
deletePostById(String id)
Marca uma postagem como inativa (deletada). -
Método:
updatePost(String postId, Post updatedPost)
Atualiza os dados de uma postagem existente no banco de dados. -
Método:
getPostById(String postId)
Retorna uma postagem específica com base no ID fornecido.
Controllers
Os controllers do backend do Colabora Aí são responsáveis por gerenciar as interações entre o cliente e os serviços do sistema, expondo endpoints REST para realizar diversas operações.
PostController
O PostController gerencia as operações relacionadas a posts. As funcionalidades incluem:
- Buscar posts por categoria: Retorna todos os posts ou filtra por uma categoria específica.
- Criar um novo post: Adiciona um post ao sistema.
- Excluir um post por ID: Marca um post como deletado.
- Atualizar um post por ID: Modifica as informações de um post existente.
- Buscar um post por ID: Recupera os detalhes de um post específico.
PointOfInterestController
O PointOfInterestController lida com a criação de Pontos de Interesse (Points of Interest - POI).
Funcionalidade principal:
- Criar um novo Ponto de Interesse: Adiciona um POI ao sistema com base nos dados fornecidos.
FeedbackController
O FeedbackController permite adicionar feedbacks aos posts. Funcionalidade principal:
- Adicionar Feedback a um Post: Associa um feedback ao post especificado pelo ID.
AuthController
O AuthController gerencia a autenticação de administradores no sistema. Funcionalidade principal:
- Autenticar um Administrador: Verifica as credenciais do administrador e retorna um token JWT para autenticação, caso as credenciais sejam válidas.