From e4ed4bb11182e958dae39401f99c186665bb6cab Mon Sep 17 00:00:00 2001 From: Alexgf22 <91955671+Alexgf22@users.noreply.github.com> Date: Fri, 20 Oct 2023 10:24:52 +0200 Subject: [PATCH 01/44] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3a2112b..e108ce7 100644 --- a/README.md +++ b/README.md @@ -5,28 +5,28 @@ # Kata API -Kata : crear una [API](https://github.com/OAI/OpenAPI-Specification) +- Kata : crear una [API](https://github.com/OAI/OpenAPI-Specification) funcional [CRUD](https://www.codecademy.com/articles/what-is-crud) sobre varias tablas en MySQL. ## Objetivo -Creación y utilización de una API y aprender y usar diferentes [métodos +- Creación y utilización de una API y aprender y usar diferentes [métodos HTTP](https://developer.mozilla.org/es/docs/Web/HTTP/Methods). Además de trabajar con Docker en un proyecto. ## Prerrequisitos -En la Kata se asume familiaridad con las siguientes tecnologías +- En la Kata se asume familiaridad con las siguientes tecnologías [Git](https://git-scm.com/), [Docker](https://www.docker.com/) y [Docker-compose](https://docs.docker.com/compose/). ## Procedimiento -[Hacer un fork](https://github.com/epfl-dojo/kata-api/#fork-destination-box) del repositorio, +- [Hacer un fork](https://github.com/epfl-dojo/kata-api/#fork-destination-box) del repositorio, crear una rama (`git checkout -b username/langage` por ejemplo `git checkout -b nicolasreymond/php`, desde vuestro fork). Haced un pull request para añadirlo a este repo y añadiéndoos al final de este fichero como autores. ## Puesta en marcha -En cada cambio de un fichero en el contenedor tenemos que hacer: +- En cada cambio de un fichero en el contenedor tenemos que hacer: ```bash docker-compose up --build ``` From 4a2fc9f2ea4baf665e59dd1eb0383dfe318f0134 Mon Sep 17 00:00:00 2001 From: Alexgf22 Date: Sun, 22 Oct 2023 12:23:59 +0200 Subject: [PATCH 02/44] Creando clases de controller, repository y service de Beer, Brewery, Category y Style --- .../controladores/BeerController.java | 36 +++++++++++++++++ .../controladores/BeerRepository.java | 3 ++ .../controladores/BeerService.java | 33 +++++++++++++++ .../controladores/BreweryController.java | 36 +++++++++++++++++ .../controladores/BreweryRepository.java | 3 ++ .../controladores/BreweryService.java | 35 ++++++++++++++++ .../controladores/CategoryController.java | 40 +++++++++++++++++++ .../controladores/CategoryRepository.java | 3 ++ .../controladores/CategoryService.java | 32 +++++++++++++++ .../controladores/StyleController.java | 40 +++++++++++++++++++ .../controladores/StyleRepository.java | 3 ++ .../controladores/StyleService.java | 32 +++++++++++++++ 12 files changed, 296 insertions(+) create mode 100644 src/main/java/com/mi/appCervezas/controladores/BeerController.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/BeerRepository.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/BeerService.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/BreweryController.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/BreweryRepository.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/BreweryService.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/CategoryController.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/CategoryRepository.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/CategoryService.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/StyleController.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/StyleRepository.java create mode 100644 src/main/java/com/mi/appCervezas/controladores/StyleService.java diff --git a/src/main/java/com/mi/appCervezas/controladores/BeerController.java b/src/main/java/com/mi/appCervezas/controladores/BeerController.java new file mode 100644 index 0000000..9df2f0a --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/BeerController.java @@ -0,0 +1,36 @@ +@RestController +@RequestMapping("/beers") +public class BeerController { + + @Autowired + private BeerService beerService; + + @GetMapping + public List getAllBeers() { + return beerService.getAllBeers(); + } + + @GetMapping("/{id}") + public ResponseEntity getBeerById(@PathVariable Long id) { + Beer beer = beerService.getBeerById(id); + return ResponseEntity.ok(beer); + } + + @PostMapping + public ResponseEntity addBeer(@RequestBody Beer beer) { + Beer savedBeer = beerService.addBeer(beer); + return ResponseEntity.status(HttpStatus.CREATED).body(savedBeer); + } + + @DeleteMapping("/{id}") + public ResponseEntity deleteBeer(@PathVariable Long id) { + beerService.deleteBeer(id); + return ResponseEntity.noContent().build(); + } + + @PutMapping("/{id}") + public ResponseEntity updateBeer(@PathVariable Long id, @RequestBody Beer beer) { + Beer updatedBeer = beerService.updateBeer(id, beer); + return ResponseEntity.ok(updatedBeer); + } +} diff --git a/src/main/java/com/mi/appCervezas/controladores/BeerRepository.java b/src/main/java/com/mi/appCervezas/controladores/BeerRepository.java new file mode 100644 index 0000000..6bdaf37 --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/BeerRepository.java @@ -0,0 +1,3 @@ +public interface BeerRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mi/appCervezas/controladores/BeerService.java b/src/main/java/com/mi/appCervezas/controladores/BeerService.java new file mode 100644 index 0000000..93ab3b2 --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/BeerService.java @@ -0,0 +1,33 @@ +@Service +public class BeerService { + + @Autowired + private BeerRepository beerRepository; + + public List getAllBeers() { + return beerRepository.findAll(); + } + + public Beer getBeerById(Long id) { + return beerRepository.findById(id).orElse(null); + } + + public Beer addBeer(Beer beer) { + return beerRepository.save(beer); + } + + public void deleteBeer(Long id) { + beerRepository.deleteById(id); + } + + public Beer updateBeer(Long id, Beer newBeer) { + Beer existingBeer = beerRepository.findById(id).orElse(null); + if (existingBeer != null) { + existingBeer.setName(newBeer.getName()); + existingBeer.setCategory(newBeer.getCategory()); + // ... (actualizar otros campos según sea necesario) + return beerRepository.save(existingBeer); + } + return null; + } +} diff --git a/src/main/java/com/mi/appCervezas/controladores/BreweryController.java b/src/main/java/com/mi/appCervezas/controladores/BreweryController.java new file mode 100644 index 0000000..035b483 --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/BreweryController.java @@ -0,0 +1,36 @@ +@RestController +@RequestMapping("/breweries") +public class BreweryController { + + @Autowired + private BreweryService breweryService; + + @GetMapping + public List getAllBreweries() { + return breweryService.getAllBreweries(); + } + + @GetMapping("/{id}") + public ResponseEntity getBreweryById(@PathVariable Long id) { + Brewery brewery = breweryService.getBreweryById(id); + return ResponseEntity.ok(brewery); + } + + @PostMapping + public ResponseEntity addBrewery(@RequestBody Brewery brewery) { + Brewery newBrewery = breweryService.addBrewery(brewery); + return ResponseEntity.ok(newBrewery); + } + + @DeleteMapping("/{id}") + public ResponseEntity deleteBrewery(@PathVariable Long id) { + breweryService.deleteBrewery(id); + return ResponseEntity.noContent().build(); + } + + @PutMapping("/{id}") + public ResponseEntity updateBrewery(@PathVariable Long id, @RequestBody Brewery newBrewery) { + Brewery updatedBrewery = breweryService.updateBrewery(id, newBrewery); + return ResponseEntity.ok(updatedBrewery); + } +} diff --git a/src/main/java/com/mi/appCervezas/controladores/BreweryRepository.java b/src/main/java/com/mi/appCervezas/controladores/BreweryRepository.java new file mode 100644 index 0000000..409c065 --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/BreweryRepository.java @@ -0,0 +1,3 @@ +public interface BreweryRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mi/appCervezas/controladores/BreweryService.java b/src/main/java/com/mi/appCervezas/controladores/BreweryService.java new file mode 100644 index 0000000..9218423 --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/BreweryService.java @@ -0,0 +1,35 @@ +@Service +public class BreweryService { + + @Autowired + private BreweryRepository breweryRepository; + + public List getAllBreweries() { + return breweryRepository.findAll(); + } + + public Brewery getBreweryById(Long id) { + return breweryRepository.findById(id).orElse(null); + } + + public Brewery addBrewery(Brewery brewery) { + return breweryRepository.save(brewery); + } + + public void deleteBrewery(Long id) { + breweryRepository.deleteById(id); + } + + public Brewery updateBrewery(Long id, Brewery newBrewery) { + Optional optionalBrewery = breweryRepository.findById(id); + + if (optionalBrewery.isPresent()) { + Brewery existingBrewery = optionalBrewery.get(); + existingBrewery.setName(newBrewery.getName()); + // ... (actualizar otros campos según sea necesario) + return breweryRepository.save(existingBrewery); + } else { + return null; // El ID no existe + } + } +} diff --git a/src/main/java/com/mi/appCervezas/controladores/CategoryController.java b/src/main/java/com/mi/appCervezas/controladores/CategoryController.java new file mode 100644 index 0000000..8d74407 --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/CategoryController.java @@ -0,0 +1,40 @@ +@RestController +@RequestMapping("/categories") +public class CategoryController { + + @Autowired + private CategoryService categoryService; + + @GetMapping + public List getAllCategories() { + return categoryService.getAllCategories(); + } + + @GetMapping("/{id}") + public ResponseEntity getCategoryById(@PathVariable Long id) { + Category category = categoryService.getCategoryById(id); + return ResponseEntity.ok(category); + } + + @PostMapping + public ResponseEntity addCategory(@RequestBody Category category) { + Category addedCategory = categoryService.addCategory(category); + return ResponseEntity.ok(addedCategory); + } + + @DeleteMapping("/{id}") + public ResponseEntity deleteCategory(@PathVariable Long id) { + categoryService.deleteCategory(id); + return ResponseEntity.noContent().build(); + } + + @PutMapping("/{id}") + public ResponseEntity updateCategory(@PathVariable Long id, @RequestBody Category newCategory) { + Category updatedCategory = categoryService.updateCategory(id, newCategory); + if (updatedCategory != null) { + return ResponseEntity.ok(updatedCategory); + } else { + return ResponseEntity.notFound().build(); + } + } +} diff --git a/src/main/java/com/mi/appCervezas/controladores/CategoryRepository.java b/src/main/java/com/mi/appCervezas/controladores/CategoryRepository.java new file mode 100644 index 0000000..1d45f98 --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/CategoryRepository.java @@ -0,0 +1,3 @@ +public interface CategoryRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mi/appCervezas/controladores/CategoryService.java b/src/main/java/com/mi/appCervezas/controladores/CategoryService.java new file mode 100644 index 0000000..561d21c --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/CategoryService.java @@ -0,0 +1,32 @@ +@Service +public class CategoryService { + + @Autowired + private CategoryRepository categoryRepository; + + public List getAllCategories() { + return categoryRepository.findAll(); + } + + public Category getCategoryById(Long id) { + return categoryRepository.findById(id).orElse(null); + } + + public Category addCategory(Category category) { + return categoryRepository.save(category); + } + + public void deleteCategory(Long id) { + categoryRepository.deleteById(id); + } + + public Category updateCategory(Long id, Category newCategory) { + Category existingCategory = categoryRepository.findById(id).orElse(null); + if (existingCategory != null) { + existingCategory.setName(newCategory.getName()); + // ... (actualizar otros campos según sea necesario) + return categoryRepository.save(existingCategory); + } + return null; + } +} diff --git a/src/main/java/com/mi/appCervezas/controladores/StyleController.java b/src/main/java/com/mi/appCervezas/controladores/StyleController.java new file mode 100644 index 0000000..c9b1a89 --- /dev/null +++ b/src/main/java/com/mi/appCervezas/controladores/StyleController.java @@ -0,0 +1,40 @@ +@RestController +@RequestMapping("/styles") +public class StyleController { + + @Autowired + private StyleService styleService; + + @GetMapping + public List