diff --git a/api-uno/src/main/java/bzh/sudchat/uno/controller/CardController.java b/api-uno/src/main/java/bzh/sudchat/uno/controller/CardController.java new file mode 100644 index 0000000..f86be1d --- /dev/null +++ b/api-uno/src/main/java/bzh/sudchat/uno/controller/CardController.java @@ -0,0 +1,32 @@ +package bzh.sudchat.uno.controller; + +import bzh.sudchat.uno.model.Card; +import bzh.sudchat.uno.repository.CardRepository; +import bzh.sudchat.uno.service.CardService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("cards") +public class CardController { + + CardService cardService; + + @Autowired + public CardController(CardService cardService) { + this.cardService = cardService; + } + + @GetMapping("") + public Iterable getCards() { + return cardService.getCards(); + } + + @GetMapping("/{id}") + public Card getCards(@PathVariable int id) { + return cardService.getCardByID(id); + } +} diff --git a/api-uno/src/main/java/bzh/sudchat/uno/exceptions/CardNotFoundException.java b/api-uno/src/main/java/bzh/sudchat/uno/exceptions/CardNotFoundException.java new file mode 100644 index 0000000..c349f55 --- /dev/null +++ b/api-uno/src/main/java/bzh/sudchat/uno/exceptions/CardNotFoundException.java @@ -0,0 +1,12 @@ +package bzh.sudchat.uno.exceptions; + +public class CardNotFoundException extends RuntimeException { + public CardNotFoundException(String message) { + super(message); + } + + public CardNotFoundException(int id) { + super("Card with id " + id + " not found"); + } + +} diff --git a/api-uno/src/main/java/bzh/sudchat/uno/model/Card.java b/api-uno/src/main/java/bzh/sudchat/uno/model/Card.java new file mode 100644 index 0000000..02f8f6b --- /dev/null +++ b/api-uno/src/main/java/bzh/sudchat/uno/model/Card.java @@ -0,0 +1,14 @@ +package bzh.sudchat.uno.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import lombok.Data; + +@Entity +@Data +public class Card { + + @Id + private int id; + +} diff --git a/api-uno/src/main/java/bzh/sudchat/uno/model/Deck.java b/api-uno/src/main/java/bzh/sudchat/uno/model/Deck.java new file mode 100644 index 0000000..a19c490 --- /dev/null +++ b/api-uno/src/main/java/bzh/sudchat/uno/model/Deck.java @@ -0,0 +1,16 @@ +package bzh.sudchat.uno.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import lombok.Data; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.Queue; + +@Data +public class Deck { + + Queue cards = new LinkedList<>(); + +} diff --git a/api-uno/src/main/java/bzh/sudchat/uno/repository/CardRepository.java b/api-uno/src/main/java/bzh/sudchat/uno/repository/CardRepository.java new file mode 100644 index 0000000..aa51780 --- /dev/null +++ b/api-uno/src/main/java/bzh/sudchat/uno/repository/CardRepository.java @@ -0,0 +1,8 @@ +package bzh.sudchat.uno.repository; + +import bzh.sudchat.uno.model.Card; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +public interface CardRepository extends CrudRepository { +} diff --git a/api-uno/src/main/java/bzh/sudchat/uno/service/CardService.java b/api-uno/src/main/java/bzh/sudchat/uno/service/CardService.java new file mode 100644 index 0000000..4e97fa2 --- /dev/null +++ b/api-uno/src/main/java/bzh/sudchat/uno/service/CardService.java @@ -0,0 +1,37 @@ +package bzh.sudchat.uno.service; + +import bzh.sudchat.uno.exceptions.CardNotFoundException; +import bzh.sudchat.uno.model.Card; +import bzh.sudchat.uno.repository.CardRepository; +import jakarta.persistence.Entity; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Data +@Service +public class CardService { + + private final CardRepository cardRepository; + + @Autowired + public CardService(CardRepository cardRepository) { + this.cardRepository = cardRepository; + } + + public Iterable getCards() { + return cardRepository.findAll(); + } + + public Card getCardByID(int id) { + Optional card = cardRepository.findById(id); + + if (card.isEmpty()) { + throw new CardNotFoundException(id); + } + + return card.get(); + } +}