Package com.proyecto.jpa.controller
Class ProductController
java.lang.Object
com.proyecto.jpa.controller.ProductController
Controlador REST para la gestión de productos (Capa de Presentación).
Expone endpoints HTTP para realizar operaciones CRUD sobre productos y consultas especializadas como búsqueda por categoría, precio, etc.
Arquitectura de 3 Capas
ProductController (Capa de Presentación) ← Esta clase
↓
ProductService (Capa de Negocio)
↓
ProductRepository (Capa de Datos)
- Since:
- 1.0.0
- Version:
- 1.0.0
- Author:
- Proyecto JPA
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionorg.springframework.http.ResponseEntity<Long>Cuenta el número total de productos.org.springframework.http.ResponseEntity<Product>createProduct(@Valid Product product) Crea un nuevo producto.org.springframework.http.ResponseEntity<Void>deleteProduct(Long id) Elimina un producto por su ID.Obtiene todos los productos.Obtiene productos disponibles (con stock).org.springframework.http.ResponseEntity<Product>getProductById(Long id) Obtiene un producto por su ID.getProductsByCategory(Long categoryId) Obtiene productos por categoría.getProductsByPriceRange(BigDecimal minPrice, BigDecimal maxPrice) Obtiene productos en un rango de precios.getTopSellingProducts(int limit) Obtiene los productos más vendidos.searchProductsByName(String name) Busca productos por nombre (búsqueda parcial).org.springframework.http.ResponseEntity<Product>updatePrice(Long id, BigDecimal newPrice) Actualiza el precio de un producto.org.springframework.http.ResponseEntity<Product>updateProduct(Long id, @Valid Product product) Actualiza un producto existente.org.springframework.http.ResponseEntity<Product>updateStock(Long id, Integer newStock) Actualiza el stock de un producto.
-
Constructor Details
-
ProductController
-
-
Method Details
-
getAllProducts
Obtiene todos los productos.- Returns:
- lista de productos con código 200 OK
-
getProductById
@GetMapping("/{id}") public org.springframework.http.ResponseEntity<Product> getProductById(@PathVariable Long id) Obtiene un producto por su ID.- Parameters:
id- el ID del producto- Returns:
- el producto con código 200 OK, o 404 Not Found si no existe
-
getProductsByCategory
@GetMapping("/category/{categoryId}") public org.springframework.http.ResponseEntity<List<Product>> getProductsByCategory(@PathVariable Long categoryId) Obtiene productos por categoría.- Parameters:
categoryId- el ID de la categoría- Returns:
- lista de productos de esa categoría
-
searchProductsByName
@GetMapping("/search") public org.springframework.http.ResponseEntity<List<Product>> searchProductsByName(@RequestParam String name) Busca productos por nombre (búsqueda parcial).- Parameters:
name- texto a buscar en el nombre- Returns:
- lista de productos que coinciden
-
getProductsByPriceRange
@GetMapping("/price-range") public org.springframework.http.ResponseEntity<List<Product>> getProductsByPriceRange(@RequestParam BigDecimal minPrice, @RequestParam BigDecimal maxPrice) Obtiene productos en un rango de precios.- Parameters:
minPrice- precio mínimomaxPrice- precio máximo- Returns:
- lista de productos en ese rango
-
getAvailableProducts
@GetMapping("/available") public org.springframework.http.ResponseEntity<List<Product>> getAvailableProducts()Obtiene productos disponibles (con stock).- Returns:
- lista de productos con stock > 0
-
getTopSellingProducts
@GetMapping("/top-selling") public org.springframework.http.ResponseEntity<List<Product>> getTopSellingProducts(@RequestParam(defaultValue="5") int limit) Obtiene los productos más vendidos.- Parameters:
limit- número de productos a retornar- Returns:
- lista de productos más vendidos
-
createProduct
@PostMapping public org.springframework.http.ResponseEntity<Product> createProduct(@Valid @RequestBody @Valid Product product) Crea un nuevo producto.- Parameters:
product- el producto a crear- Returns:
- el producto creado con código 201 Created
-
updateProduct
@PutMapping("/{id}") public org.springframework.http.ResponseEntity<Product> updateProduct(@PathVariable Long id, @Valid @RequestBody @Valid Product product) Actualiza un producto existente.- Parameters:
id- el ID del producto a actualizarproduct- los nuevos datos del producto- Returns:
- el producto actualizado con código 200 OK
-
updateStock
@PatchMapping("/{id}/stock") public org.springframework.http.ResponseEntity<Product> updateStock(@PathVariable Long id, @RequestParam Integer newStock) Actualiza el stock de un producto.- Parameters:
id- el ID del productonewStock- el nuevo valor de stock- Returns:
- el producto actualizado con código 200 OK
-
updatePrice
@PatchMapping("/{id}/price") public org.springframework.http.ResponseEntity<Product> updatePrice(@PathVariable Long id, @RequestParam BigDecimal newPrice) Actualiza el precio de un producto.- Parameters:
id- el ID del productonewPrice- el nuevo precio- Returns:
- el producto actualizado con código 200 OK
-
deleteProduct
@DeleteMapping("/{id}") public org.springframework.http.ResponseEntity<Void> deleteProduct(@PathVariable Long id) Elimina un producto por su ID.- Parameters:
id- el ID del producto a eliminar- Returns:
- código 204 No Content si se eliminó
-
countProducts
Cuenta el número total de productos.- Returns:
- el número de productos con código 200 OK
-