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" }

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
eFeignClient
- 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"
}