Criando um microserviço de organização de decks Yu-Gi-Oh com Spring Boot — Parte 2

Neste artigo dou continuidade à construção da uma aplicação baseada em microserviços, utilizando Java e Spring Boot para gerenciar cartas e decks de Yu-Gi-Oh, com arquitetura hexagonal. Neste segundo artigo incluo o suporte multi usuário. Recapitulando Na Parte 1 abordamos: Modelagem baseada na orientação a objetos pura, explorando a herança entre cartas (Monster, Spell, Trap) Foi feita a integração com API externa YGOProDeck Uso do padrão de projeto factory através da classe:CardFactory e FeignClient Arquitetura Hexagonal aplicada Agora evoluímos para: Persistência com Spring Data JPA (Usando o banco de dados local h2) Criação de cartas personalizadas via POST Filtragem de cartas por usuário com o parâmetro ownerId Endpoint de listagem exclusiva GET /cards/custom?ownerId= O Cenário Atual Cada carta agora carrega um campo ownerId, que identifica o usuário que a criou. Isso permite separar cartas criadas manualmente daquelas importadas via API externa. Obs: O fato de incluirmos um simples campo na nossa aplicação faz com que seja necessário alterar todas as outras estruturas que contavam com a ausência desse campo, por exemplo: o teste de persistencia não incluia esse novo campo, nosso mapper não esperava esse campo e todas as outras estruturas que fazem parte da criação e persistencia desse campo no banco de dados. Exemplo de objeto Card salvo: { "id": 99999999, "name": "Teste Dragão Sombrio", "type": "MONSTER", "ownerId": "user123" }

Apr 16, 2025 - 21:08
 0
Criando um microserviço de organização de decks Yu-Gi-Oh com Spring Boot — Parte 2

Neste artigo dou continuidade à construção da uma aplicação baseada em microserviços, utilizando Java e Spring Boot para gerenciar cartas e decks de Yu-Gi-Oh, com arquitetura hexagonal. Neste segundo artigo incluo o suporte multi usuário.

Recapitulando

Na Parte 1 abordamos:

  • Modelagem baseada na orientação a objetos pura, explorando a herança entre cartas (Monster, Spell, Trap)
  • Foi feita a integração com API externa YGOProDeck
  • Uso do padrão de projeto factory através da classe:CardFactory e FeignClient
  • Arquitetura Hexagonal aplicada

Agora evoluímos para:

  • Persistência com Spring Data JPA (Usando o banco de dados local h2)
  • Criação de cartas personalizadas via POST
  • Filtragem de cartas por usuário com o parâmetro ownerId
  • Endpoint de listagem exclusiva GET /cards/custom?ownerId=

O Cenário Atual

Cada carta agora carrega um campo ownerId, que identifica o usuário que a criou. Isso permite separar cartas criadas manualmente daquelas importadas via API externa.

Obs: O fato de incluirmos um simples campo na nossa aplicação faz com que seja necessário alterar todas as outras estruturas que contavam com a ausência desse campo, por exemplo: o teste de persistencia não incluia esse novo campo, nosso mapper não esperava esse campo e todas as outras estruturas que fazem parte da criação e persistencia desse campo no banco de dados.

Exemplo de objeto Card salvo:

{
  "id": 99999999,
  "name": "Teste Dragão Sombrio",
  "type": "MONSTER",
  "ownerId": "user123"
}