diff --git a/api/src/main/java/fr/gameovergne/api/controller/app/BrandController.java b/api/src/main/java/fr/gameovergne/api/controller/app/BrandController.java deleted file mode 100644 index 1327003..0000000 --- a/api/src/main/java/fr/gameovergne/api/controller/app/BrandController.java +++ /dev/null @@ -1,64 +0,0 @@ -package fr.gameovergne.api.controller.app; - -import fr.gameovergne.api.dto.app.BrandDTO; -import fr.gameovergne.api.mapper.app.BrandMapper; -import fr.gameovergne.api.model.app.Brand; -import fr.gameovergne.api.service.app.BrandService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequestMapping("/api/app/brands") -public class BrandController { - - private final BrandService brandService; - private final BrandMapper brandMapper; - - @Autowired - public BrandController(BrandService brandService, BrandMapper brandMapper) { - this.brandService = brandService; - this.brandMapper = brandMapper; - } - - @GetMapping - public List getAllBrands() { - return brandService.getAllBrands() - .stream() - .map(brandMapper::toDto) - .toList(); - } - - @GetMapping("/{id}") - public ResponseEntity getBrandById(@PathVariable Long id) { - return brandService.getBrandById(id) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build()); - } - - @PostMapping - public void saveBrand(@RequestBody BrandDTO brandDTO) { - brandService.saveBrand(brandMapper.fromDto(brandDTO)); - } - - @PutMapping("/{id}") - public ResponseEntity updateBrand(@PathVariable Long id, @RequestBody BrandDTO brandDTO) { - Brand brand = brandMapper.fromDto(brandDTO); - brand.setId(id); - return brandService.getBrandById(id) - .map(existingBrand -> brandService.updateBrand(brand) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build())) - .orElse(ResponseEntity.notFound().build()); - } - - @DeleteMapping("/{id}") - public ResponseEntity deleteBrandById(@PathVariable Long id) { - return brandService.deleteBrandById(id) - .map(brand -> ResponseEntity.ok().body(brand)) - .orElse(ResponseEntity.notFound().build()); - } -} diff --git a/api/src/main/java/fr/gameovergne/api/controller/app/CategoryController.java b/api/src/main/java/fr/gameovergne/api/controller/app/CategoryController.java deleted file mode 100644 index 707fafa..0000000 --- a/api/src/main/java/fr/gameovergne/api/controller/app/CategoryController.java +++ /dev/null @@ -1,63 +0,0 @@ -package fr.gameovergne.api.controller.app; - -import fr.gameovergne.api.dto.app.CategoryDTO; -import fr.gameovergne.api.mapper.app.CategoryMapper; -import fr.gameovergne.api.model.app.Category; -import fr.gameovergne.api.service.app.CategoryService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequestMapping("/api/app/categories") -public class CategoryController { - - private final CategoryService categoryService; - private final CategoryMapper categoryMapper; - - @Autowired - public CategoryController(CategoryService categoryService, CategoryMapper categoryMapper) { - this.categoryService = categoryService; - this.categoryMapper = categoryMapper; - } - - @GetMapping - public List getAllCategories() { - return categoryService.getAllCategories() - .stream() - .map(categoryMapper::toDto) - .toList(); - } - - @GetMapping("/{id}") - public ResponseEntity getCategoryById(@PathVariable Long id) { - return categoryService.getCategoryById(id) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build()); - } - - @PostMapping - public void saveCategory(@RequestBody CategoryDTO categoryDTO) { - categoryService.saveCategory(categoryMapper.fromDto(categoryDTO)); - } - - @PutMapping("/{id}") - public ResponseEntity updateCategory(@PathVariable Long id, @RequestBody CategoryDTO categoryDTO) { - Category category = categoryMapper.fromDto(categoryDTO); - category.setId(id); - return categoryService.getCategoryById(id) - .map(existingCategory -> categoryService.updateCategory(category) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build())) - .orElse(ResponseEntity.notFound().build()); - } - - @DeleteMapping("/{id}") - public ResponseEntity deleteCategoryById(@PathVariable Long id) { - return categoryService.deleteCategoryById(id) - .map(category -> ResponseEntity.ok().body(category)) - .orElse(ResponseEntity.notFound().build()); - } -} diff --git a/api/src/main/java/fr/gameovergne/api/controller/app/ConditionController.java b/api/src/main/java/fr/gameovergne/api/controller/app/ConditionController.java deleted file mode 100644 index 2b0c596..0000000 --- a/api/src/main/java/fr/gameovergne/api/controller/app/ConditionController.java +++ /dev/null @@ -1,23 +0,0 @@ -package fr.gameovergne.api.controller.app; - -import fr.gameovergne.api.dto.app.ConditionDTO; -import fr.gameovergne.api.model.app.Condition; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -@RestController -@RequestMapping("/api/app/conditions") -public class ConditionController { - - @GetMapping - public List list() { - return Arrays.stream(Condition.values()) - .map(condition -> new ConditionDTO(condition.name(), condition.getDisplayName())) - .collect(Collectors.toList()); - } -} diff --git a/api/src/main/java/fr/gameovergne/api/controller/app/ImageController.java b/api/src/main/java/fr/gameovergne/api/controller/app/ImageController.java deleted file mode 100644 index 988643e..0000000 --- a/api/src/main/java/fr/gameovergne/api/controller/app/ImageController.java +++ /dev/null @@ -1,63 +0,0 @@ -package fr.gameovergne.api.controller.app; - -import fr.gameovergne.api.dto.app.ImageDTO; -import fr.gameovergne.api.mapper.app.ImageMapper; -import fr.gameovergne.api.model.app.Image; -import fr.gameovergne.api.service.app.ImageService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequestMapping("/api/app/images") -public class ImageController { - - private final ImageService imageService; - private final ImageMapper imageMapper; - - @Autowired - public ImageController(ImageService imageService, ImageMapper imageMapper) { - this.imageService = imageService; - this.imageMapper = imageMapper; - } - - @GetMapping - public List getAllImages() { - return imageService.getAllImages() - .stream() - .map(imageMapper::toDto) - .toList(); - } - - @GetMapping("/{id}") - public ResponseEntity getImageById(@PathVariable Long id) { - return imageService.getImageById(id) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build()); - } - - @PostMapping - public void saveImage(@RequestBody ImageDTO imageDTO) { - imageService.saveImage(imageMapper.fromDto(imageDTO)); - } - - @PutMapping("/{id}") - public ResponseEntity updateImage(@PathVariable Long id, @RequestBody ImageDTO imageDTO) { - Image image = imageMapper.fromDto(imageDTO); - image.setId(id); - return imageService.getImageById(id) - .map(existingImage -> imageService.updateImage(image) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build())) - .orElse(ResponseEntity.notFound().build()); - } - - @DeleteMapping("/{id}") - public ResponseEntity deleteImageById(@PathVariable Long id) { - return imageService.deleteImageById(id) - .map(image -> ResponseEntity.ok().body(image)) - .orElse(ResponseEntity.notFound().build()); - } -} diff --git a/api/src/main/java/fr/gameovergne/api/controller/app/PlatformController.java b/api/src/main/java/fr/gameovergne/api/controller/app/PlatformController.java deleted file mode 100644 index 94557b5..0000000 --- a/api/src/main/java/fr/gameovergne/api/controller/app/PlatformController.java +++ /dev/null @@ -1,61 +0,0 @@ -package fr.gameovergne.api.controller.app; - -import fr.gameovergne.api.dto.app.PlatformDTO; -import fr.gameovergne.api.mapper.app.PlatformMapper; -import fr.gameovergne.api.model.app.Platform; -import fr.gameovergne.api.service.app.PlatformService; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequestMapping("/api/app/platforms") -public class PlatformController { - - private final PlatformService platformService; - private final PlatformMapper platformMapper; - - public PlatformController(PlatformService platformService, PlatformMapper platformMapper) { - this.platformService = platformService; - this.platformMapper = platformMapper; - } - - @GetMapping - public List getAllPlatforms() { - return platformService.getAllPlatforms() - .stream() - .map(platformMapper::toDto) - .toList(); - } - - @GetMapping("/{id}") - public ResponseEntity getPlatformById(@PathVariable Long id) { - return platformService.getPlatformById(id) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build()); - } - - @PostMapping - public void savePlatform(@RequestBody PlatformDTO platformDTO) { - platformService.savePlatform(platformMapper.fromDto(platformDTO)); - } - - @PutMapping("/{id}") - public ResponseEntity updatePlatform(@PathVariable Long id, @RequestBody PlatformDTO platformDTO) { - Platform platform = platformMapper.fromDto(platformDTO); - platform.setId(id); - return platformService.getPlatformById(id) - .map(existingPlatform -> platformService.updatePlatform(platform) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build())) - .orElse(ResponseEntity.notFound().build()); - } - - @DeleteMapping("/{id}") - public ResponseEntity deletePlatformById(@PathVariable Long id) { - return platformService.deletePlatformById(id) - .map(platform -> ResponseEntity.ok().body(platform)) - .orElse(ResponseEntity.notFound().build()); - } -} diff --git a/api/src/main/java/fr/gameovergne/api/controller/app/ProductController.java b/api/src/main/java/fr/gameovergne/api/controller/app/ProductController.java deleted file mode 100644 index 70b6de9..0000000 --- a/api/src/main/java/fr/gameovergne/api/controller/app/ProductController.java +++ /dev/null @@ -1,66 +0,0 @@ -package fr.gameovergne.api.controller.app; - -import fr.gameovergne.api.dto.app.ProductDTO; -import fr.gameovergne.api.mapper.app.ProductMapper; -import fr.gameovergne.api.model.app.Product; -import fr.gameovergne.api.service.app.ProductService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequestMapping("/api/app/products") -public class ProductController { - - private final ProductService productService; - private final ProductMapper productMapper; - - @Autowired - public ProductController(ProductService productService, ProductMapper productMapper) { - this.productService = productService; - this.productMapper = productMapper; - } - - @GetMapping - public List getAllProducts() { - return productService.getAllProducts() - .stream() - .map(productMapper::toDto) - .toList(); - } - - @GetMapping("/{id}") - public ResponseEntity getProductById(@PathVariable Long id) { - return productService.getProductById(id) - .stream() - .map(productMapper::toDto) - .findFirst() - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build()); - } - - @PostMapping - public void saveProduct(@RequestBody ProductDTO productDTO) { - productService.saveProduct(productMapper.fromDto(productDTO)); - } - - @PutMapping("/{id}") - public ResponseEntity updateProduct(@PathVariable Long id, @RequestBody ProductDTO productDTO) { - Product product = productMapper.fromDto(productDTO); - product.setId(id); - return productService.getProductById(id) - .map(existingProduct -> productService.updateProduct(product) - .map(ResponseEntity::ok) - .orElse(ResponseEntity.notFound().build())) - .orElse(ResponseEntity.notFound().build()); - } - - @DeleteMapping("/{id}") - public ResponseEntity deleteProductById(@PathVariable Long id) { - return productService.deleteProductById(id) - .map(product -> ResponseEntity.ok().body(product)) - .orElse(ResponseEntity.notFound().build()); - } -} diff --git a/api/src/main/java/fr/gameovergne/api/controller/app/ProductImageController.java b/api/src/main/java/fr/gameovergne/api/controller/app/ProductImageController.java deleted file mode 100644 index 26d3450..0000000 --- a/api/src/main/java/fr/gameovergne/api/controller/app/ProductImageController.java +++ /dev/null @@ -1,11 +0,0 @@ -package fr.gameovergne.api.controller.app; - -import org.springframework.web.bind.annotation.*; - -@RestController -@RequestMapping("/api/app/products_images") -public class ProductImageController { - - - -} diff --git a/api/src/main/java/fr/gameovergne/api/dto/app/BrandDTO.java b/api/src/main/java/fr/gameovergne/api/dto/app/BrandDTO.java deleted file mode 100644 index f9a0573..0000000 --- a/api/src/main/java/fr/gameovergne/api/dto/app/BrandDTO.java +++ /dev/null @@ -1,18 +0,0 @@ -package fr.gameovergne.api.dto.app; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class BrandDTO { - - @JsonProperty("id") - private Long id; - - @JsonProperty("name") - private String name; -} diff --git a/api/src/main/java/fr/gameovergne/api/dto/app/CategoryDTO.java b/api/src/main/java/fr/gameovergne/api/dto/app/CategoryDTO.java deleted file mode 100644 index 36bc5da..0000000 --- a/api/src/main/java/fr/gameovergne/api/dto/app/CategoryDTO.java +++ /dev/null @@ -1,18 +0,0 @@ -package fr.gameovergne.api.dto.app; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class CategoryDTO { - - @JsonProperty("id") - private Long id; - - @JsonProperty("name") - private String name; -} diff --git a/api/src/main/java/fr/gameovergne/api/dto/app/ConditionDTO.java b/api/src/main/java/fr/gameovergne/api/dto/app/ConditionDTO.java deleted file mode 100644 index 8766b22..0000000 --- a/api/src/main/java/fr/gameovergne/api/dto/app/ConditionDTO.java +++ /dev/null @@ -1,16 +0,0 @@ -package fr.gameovergne.api.dto.app; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public class ConditionDTO { - - @JsonProperty("name") - private final String name; - - @JsonProperty("displayName") - private final String displayName; -} diff --git a/api/src/main/java/fr/gameovergne/api/dto/app/ImageDTO.java b/api/src/main/java/fr/gameovergne/api/dto/app/ImageDTO.java deleted file mode 100644 index c49ceb0..0000000 --- a/api/src/main/java/fr/gameovergne/api/dto/app/ImageDTO.java +++ /dev/null @@ -1,21 +0,0 @@ -package fr.gameovergne.api.dto.app; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ImageDTO { - - @JsonProperty("id") - private Long id; - - @JsonProperty("name") - private String name; - - @JsonProperty("url") - private String url; -} diff --git a/api/src/main/java/fr/gameovergne/api/dto/app/PlatformDTO.java b/api/src/main/java/fr/gameovergne/api/dto/app/PlatformDTO.java deleted file mode 100644 index 20a77e3..0000000 --- a/api/src/main/java/fr/gameovergne/api/dto/app/PlatformDTO.java +++ /dev/null @@ -1,21 +0,0 @@ -package fr.gameovergne.api.dto.app; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PlatformDTO { - - @JsonProperty("id") - private Long id; - - @JsonProperty("name") - private String name; - - @JsonProperty("brand") - private BrandDTO brandDTO; -} diff --git a/api/src/main/java/fr/gameovergne/api/dto/app/ProductDTO.java b/api/src/main/java/fr/gameovergne/api/dto/app/ProductDTO.java deleted file mode 100644 index 2ff58ab..0000000 --- a/api/src/main/java/fr/gameovergne/api/dto/app/ProductDTO.java +++ /dev/null @@ -1,42 +0,0 @@ -package fr.gameovergne.api.dto.app; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ProductDTO { - - @JsonProperty("id") - private Long id; - - @JsonProperty("title") - private String title; - - @JsonProperty("description") - private String description; - - @JsonProperty("price") - private double price; - - @JsonProperty("quantity") - private int quantity; - - @JsonProperty("complete") - private boolean complete = false; - - @JsonProperty("manualIncluded") - private boolean manualIncluded = false; - - @JsonProperty("category") - private CategoryDTO categoryDTO; - - @JsonProperty("platform") - private PlatformDTO platformDTO; - - @JsonProperty("condition") - private ConditionDTO conditionDTO; -} diff --git a/api/src/main/java/fr/gameovergne/api/mapper/app/BrandMapper.java b/api/src/main/java/fr/gameovergne/api/mapper/app/BrandMapper.java deleted file mode 100644 index fd3f3d5..0000000 --- a/api/src/main/java/fr/gameovergne/api/mapper/app/BrandMapper.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.gameovergne.api.mapper.app; - -import fr.gameovergne.api.dto.app.BrandDTO; -import fr.gameovergne.api.model.app.Brand; -import org.springframework.stereotype.Component; - -@Component -public class BrandMapper { - - public Brand fromDto(BrandDTO brandDTO) { - if (brandDTO == null) return null; - Brand brand = new Brand(); - brand.setId(brandDTO.getId()); - brand.setName(brandDTO.getName()); - return brand; - } - - public BrandDTO toDto(Brand brand) { - if (brand == null) return null; - BrandDTO brandDTO = new BrandDTO(); - brandDTO.setId(brand.getId()); - brandDTO.setName(brand.getName()); - return brandDTO; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/mapper/app/CategoryMapper.java b/api/src/main/java/fr/gameovergne/api/mapper/app/CategoryMapper.java deleted file mode 100644 index 7ee803f..0000000 --- a/api/src/main/java/fr/gameovergne/api/mapper/app/CategoryMapper.java +++ /dev/null @@ -1,25 +0,0 @@ -package fr.gameovergne.api.mapper.app; - -import fr.gameovergne.api.dto.app.CategoryDTO; -import fr.gameovergne.api.model.app.Category; -import org.springframework.stereotype.Component; - -@Component -public class CategoryMapper { - - public Category fromDto(CategoryDTO categoryDTO) { - if (categoryDTO == null) return null; - Category category = new Category(); - category.setId(categoryDTO.getId()); - category.setName(categoryDTO.getName()); - return category; - } - - public CategoryDTO toDto(Category category) { - if (category == null) return null; - CategoryDTO categoryDTO = new CategoryDTO(); - categoryDTO.setId(category.getId()); - categoryDTO.setName(category.getName()); - return categoryDTO; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/mapper/app/ImageMapper.java b/api/src/main/java/fr/gameovergne/api/mapper/app/ImageMapper.java deleted file mode 100644 index 06b0d3b..0000000 --- a/api/src/main/java/fr/gameovergne/api/mapper/app/ImageMapper.java +++ /dev/null @@ -1,27 +0,0 @@ -package fr.gameovergne.api.mapper.app; - -import fr.gameovergne.api.dto.app.ImageDTO; -import fr.gameovergne.api.model.app.Image; -import org.springframework.stereotype.Component; - -@Component -public class ImageMapper { - - public Image fromDto(ImageDTO imageDTO) { - if (imageDTO == null) return null; - Image image = new Image(); - image.setId(imageDTO.getId()); - image.setName(imageDTO.getName()); - image.setUrl(imageDTO.getUrl()); - return image; - } - - public ImageDTO toDto(Image image) { - if (image == null) return null; - ImageDTO imageDTO = new ImageDTO(); - imageDTO.setId(image.getId()); - imageDTO.setName(image.getName()); - imageDTO.setUrl(image.getUrl()); - return imageDTO; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/mapper/app/PlatformMapper.java b/api/src/main/java/fr/gameovergne/api/mapper/app/PlatformMapper.java deleted file mode 100644 index ccd3481..0000000 --- a/api/src/main/java/fr/gameovergne/api/mapper/app/PlatformMapper.java +++ /dev/null @@ -1,44 +0,0 @@ -package fr.gameovergne.api.mapper.app; - -import fr.gameovergne.api.dto.app.BrandDTO; -import fr.gameovergne.api.dto.app.PlatformDTO; -import fr.gameovergne.api.model.app.Platform; -import fr.gameovergne.api.service.app.BrandService; -import org.springframework.stereotype.Component; - -@Component -public class PlatformMapper { - - private final BrandService brandService; - - public PlatformMapper(BrandService brandService) { - this.brandService = brandService; - } - - public Platform fromDto(PlatformDTO platformDTO) { - if (platformDTO == null) return null; - Platform platform = new Platform(); - platform.setId(platformDTO.getId()); - platform.setName(platformDTO.getName()); - - if (platformDTO.getBrandDTO() != null && platformDTO.getBrandDTO().getName() != null) { - platform.setBrand(this.brandService.getBrandByName(platformDTO.getBrandDTO().getName()).orElse(null)); - } else { - platform.setBrand(null); - } - return platform; - } - - public PlatformDTO toDto(Platform platform) { - if (platform == null) return null; - PlatformDTO platformDTO = new PlatformDTO(); - platformDTO.setId(platform.getId()); - platformDTO.setName(platform.getName()); - if (platform.getBrand() != null) { - platformDTO.setBrandDTO(new BrandDTO(platform.getBrand().getId(), platform.getBrand().getName())); - } else { - platformDTO.setBrandDTO(null); - } - return platformDTO; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/mapper/app/ProductMapper.java b/api/src/main/java/fr/gameovergne/api/mapper/app/ProductMapper.java deleted file mode 100644 index c0fda68..0000000 --- a/api/src/main/java/fr/gameovergne/api/mapper/app/ProductMapper.java +++ /dev/null @@ -1,122 +0,0 @@ -package fr.gameovergne.api.mapper.app; - -import fr.gameovergne.api.dto.app.*; -import fr.gameovergne.api.model.app.Brand; -import fr.gameovergne.api.model.app.Condition; -import fr.gameovergne.api.model.app.Platform; -import fr.gameovergne.api.model.app.Product; -import fr.gameovergne.api.service.app.BrandService; -import fr.gameovergne.api.service.app.CategoryService; -import fr.gameovergne.api.service.app.PlatformService; -import org.springframework.stereotype.Component; - -@Component -public class ProductMapper { - - private final CategoryService categoryService; - private final BrandService brandService; - private final PlatformService platformService; - - public ProductMapper(CategoryService categoryService, BrandService brandService, PlatformService platformService) { - this.categoryService = categoryService; - this.brandService = brandService; - this.platformService = platformService; - } - - public Product fromDto(ProductDTO productDTO) { - if (productDTO == null) return null; - Product product = new Product(); - product.setId(productDTO.getId()); - product.setTitle(productDTO.getTitle()); - product.setDescription(productDTO.getDescription()); - product.setPrice(productDTO.getPrice()); - product.setQuantity(productDTO.getQuantity()); - product.setComplete(productDTO.isComplete()); - product.setManualIncluded(productDTO.isManualIncluded()); - - if (productDTO.getCategoryDTO() != null && productDTO.getCategoryDTO().getName() != null) { - product.setCategory(this.categoryService.getCategoryByName(productDTO.getCategoryDTO().getName()).orElse(null)); - } else { - product.setCategory(null); - } - - if (productDTO.getPlatformDTO() != null && productDTO.getPlatformDTO().getName() != null) { - String platformName = productDTO.getPlatformDTO().getName(); - Platform platform = this.platformService.getPlatformByName(platformName) - .orElseGet(() -> { - Platform p = new Platform(); - p.setName(platformName); - return p; - }); - - if (productDTO.getPlatformDTO().getBrandDTO() != null && productDTO.getPlatformDTO().getBrandDTO().getName() != null) { - String brandName = productDTO.getPlatformDTO().getBrandDTO().getName(); - Brand brand = this.brandService.getBrandByName(brandName) - .orElseGet(() -> { - Brand b = new Brand(); - b.setName(brandName); - return b; - }); - platform.setBrand(brand); - } - - product.setPlatform(platform); - } else { - product.setPlatform(null); - } - - if (productDTO.getConditionDTO() != null && productDTO.getConditionDTO().getName() != null) { - try { - product.setCondition(Condition.valueOf(productDTO.getConditionDTO().getName())); - } catch (IllegalArgumentException e) { - product.setCondition(null); - } - } else { - product.setCondition(null); - } - - return product; - } - - public ProductDTO toDto(Product product) { - if (product == null) return null; - ProductDTO productDTO = new ProductDTO(); - productDTO.setId(product.getId()); - productDTO.setTitle(product.getTitle()); - productDTO.setDescription(product.getDescription()); - productDTO.setPrice(product.getPrice()); - productDTO.setQuantity(product.getQuantity()); - productDTO.setComplete(product.isComplete()); - productDTO.setManualIncluded(product.isManualIncluded()); - - if (product.getCategory() != null) { - productDTO.setCategoryDTO(new CategoryDTO(product.getCategory().getId(), product.getCategory().getName())); - } else { - productDTO.setCategoryDTO(null); - } - - if (product.getPlatform() != null) { - Platform platform = product.getPlatform(); - PlatformDTO platformDTO = new PlatformDTO(); - platformDTO.setId(platform.getId()); - platformDTO.setName(platform.getName()); - - if (platform.getBrand() != null) { - platformDTO.setBrandDTO(new BrandDTO(platform.getBrand().getId(), platform.getBrand().getName())); - } else { - platformDTO.setBrandDTO(null); - } - productDTO.setPlatformDTO(platformDTO); - } else { - productDTO.setPlatformDTO(null); - } - - if (product.getCondition() != null) { - productDTO.setConditionDTO(new ConditionDTO(product.getCondition().name(), product.getCondition().getDisplayName())); - } else { - productDTO.setConditionDTO(null); - } - - return productDTO; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/model/app/Brand.java b/api/src/main/java/fr/gameovergne/api/model/app/Brand.java deleted file mode 100644 index 9ec4e1e..0000000 --- a/api/src/main/java/fr/gameovergne/api/model/app/Brand.java +++ /dev/null @@ -1,32 +0,0 @@ -package fr.gameovergne.api.model.app; - -import com.fasterxml.jackson.annotation.JsonIdentityInfo; -import com.fasterxml.jackson.annotation.JsonManagedReference; -import com.fasterxml.jackson.annotation.ObjectIdGenerators; -import jakarta.persistence.*; -import jakarta.validation.constraints.NotBlank; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -@Entity -@Data -@AllArgsConstructor -@NoArgsConstructor -@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id") -@Table(name = "brands") -public class Brand { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @NotBlank - @Column(name = "brand_name", length = 30, unique = true) - private String name; - - @OneToMany(mappedBy = "brand", cascade = CascadeType.ALL, orphanRemoval = true) - private List platforms; -} diff --git a/api/src/main/java/fr/gameovergne/api/model/app/Category.java b/api/src/main/java/fr/gameovergne/api/model/app/Category.java deleted file mode 100644 index 160a6e5..0000000 --- a/api/src/main/java/fr/gameovergne/api/model/app/Category.java +++ /dev/null @@ -1,33 +0,0 @@ -package fr.gameovergne.api.model.app; - -import com.fasterxml.jackson.annotation.JsonIdentityInfo; -import com.fasterxml.jackson.annotation.JsonManagedReference; -import com.fasterxml.jackson.annotation.ObjectIdGenerators; -import jakarta.persistence.*; -import jakarta.validation.constraints.NotBlank; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - - -@Entity -@Data -@AllArgsConstructor -@NoArgsConstructor -@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id") -@Table(name = "categories") -public class Category { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @NotBlank - @Column(name = "category_name", length = 30, unique = true, nullable = false) - private String name; - - @OneToMany(mappedBy = "category", cascade = CascadeType.ALL, orphanRemoval = true) - private List products; -} diff --git a/api/src/main/java/fr/gameovergne/api/model/app/Condition.java b/api/src/main/java/fr/gameovergne/api/model/app/Condition.java deleted file mode 100644 index 59baf30..0000000 --- a/api/src/main/java/fr/gameovergne/api/model/app/Condition.java +++ /dev/null @@ -1,18 +0,0 @@ -package fr.gameovergne.api.model.app; - -import lombok.Getter; - -@Getter -public enum Condition { - NEW("Neuf"), - VERY_GOOD("Très bon état"), - GOOD("Bon état"), - POOR("Mauvais état"), - VERY_POOR("Très mauvais état"); - - private final String displayName; - - Condition(String displayName) { - this.displayName = displayName; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/model/app/Image.java b/api/src/main/java/fr/gameovergne/api/model/app/Image.java deleted file mode 100644 index 0809284..0000000 --- a/api/src/main/java/fr/gameovergne/api/model/app/Image.java +++ /dev/null @@ -1,49 +0,0 @@ -package fr.gameovergne.api.model.app; - -import com.fasterxml.jackson.annotation.JsonIdentityInfo; -import com.fasterxml.jackson.annotation.ObjectIdGenerators; -import fr.gameovergne.api.model.user.User; -import jakarta.persistence.*; -import jakarta.validation.constraints.NotBlank; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -@Entity -@Data -@AllArgsConstructor -@NoArgsConstructor -@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id") -@Table(name = "images") -public class Image { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Column(length = 120, unique = true, nullable = false) - @NotBlank - private String name; - - @Column(length = 255, unique = true, nullable = false) - @NotBlank - private String url; - - @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) - @JoinTable( - name = "users_images", - joinColumns = @JoinColumn(name = "image_id"), - inverseJoinColumns = @JoinColumn(name = "user_id") - ) - private List users; - - @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) - @JoinTable( - name = "products_images", - joinColumns = @JoinColumn(name = "image_id"), - inverseJoinColumns = @JoinColumn(name = "product_id") - ) - private List products; -} diff --git a/api/src/main/java/fr/gameovergne/api/model/app/Platform.java b/api/src/main/java/fr/gameovergne/api/model/app/Platform.java deleted file mode 100644 index d8926e2..0000000 --- a/api/src/main/java/fr/gameovergne/api/model/app/Platform.java +++ /dev/null @@ -1,37 +0,0 @@ -package fr.gameovergne.api.model.app; - -import com.fasterxml.jackson.annotation.JsonBackReference; -import com.fasterxml.jackson.annotation.JsonIdentityInfo; -import com.fasterxml.jackson.annotation.JsonManagedReference; -import com.fasterxml.jackson.annotation.ObjectIdGenerators; -import jakarta.persistence.*; -import jakarta.validation.constraints.NotBlank; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -@Entity -@Data -@AllArgsConstructor -@NoArgsConstructor -@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id") -@Table(name = "platforms") -public class Platform { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @NotBlank - @Column(name = "platform_name", length = 30, unique = true, nullable = false) - private String name; - - @ManyToOne - @JoinColumn(name = "brand_id") - private Brand brand; - - @OneToMany(mappedBy = "platform", cascade = CascadeType.ALL, orphanRemoval = true) - private List products; -} diff --git a/api/src/main/java/fr/gameovergne/api/model/app/Product.java b/api/src/main/java/fr/gameovergne/api/model/app/Product.java deleted file mode 100644 index 8ef3201..0000000 --- a/api/src/main/java/fr/gameovergne/api/model/app/Product.java +++ /dev/null @@ -1,71 +0,0 @@ -package fr.gameovergne.api.model.app; - -import com.fasterxml.jackson.annotation.JsonBackReference; -import com.fasterxml.jackson.annotation.JsonIdentityInfo; -import com.fasterxml.jackson.annotation.ObjectIdGenerators; -import jakarta.persistence.*; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - - -@Entity -@Data -@AllArgsConstructor -@NoArgsConstructor -@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id") -@Table(name = "products") -public class Product { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @NotBlank - @Column(name = "product_title", length = 120, unique = true, nullable = false) - private String title; - - @Column(name = "product_description", length = 500) - private String description; - - @NotNull - @Column(name = "product_price") - private double price; - - @NotNull - @Column(name = "product_quantity") - private int quantity; - - @NotNull - @Column(name = "product_complete") - private boolean complete = false; - - @NotNull - @Column(name = "product_manual") - private boolean manualIncluded = false; // Notice - - @ManyToOne - @JoinColumn(name = "category_id") - private Category category; - - @ManyToOne - @JoinColumn(name = "platform_id") - private Platform platform; - - @NotNull - @Enumerated(EnumType.STRING) - @Column(name = "product_condition") - private Condition condition; - - @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) - @JoinTable( - name = "products_images", - joinColumns = @JoinColumn(name = "image_id"), - inverseJoinColumns = @JoinColumn(name = "product_id") - ) - private List images; -} diff --git a/api/src/main/java/fr/gameovergne/api/repository/app/BrandRepository.java b/api/src/main/java/fr/gameovergne/api/repository/app/BrandRepository.java deleted file mode 100644 index 365037b..0000000 --- a/api/src/main/java/fr/gameovergne/api/repository/app/BrandRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package fr.gameovergne.api.repository.app; - -import fr.gameovergne.api.model.app.Brand; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.Optional; - -public interface BrandRepository extends JpaRepository { - Optional findByName(String name); -} diff --git a/api/src/main/java/fr/gameovergne/api/repository/app/CategoryRepository.java b/api/src/main/java/fr/gameovergne/api/repository/app/CategoryRepository.java deleted file mode 100644 index 6bbbc24..0000000 --- a/api/src/main/java/fr/gameovergne/api/repository/app/CategoryRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package fr.gameovergne.api.repository.app; - -import fr.gameovergne.api.model.app.Category; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.Optional; - -public interface CategoryRepository extends JpaRepository { - Optional findByName(String name); -} diff --git a/api/src/main/java/fr/gameovergne/api/repository/app/ImageRepository.java b/api/src/main/java/fr/gameovergne/api/repository/app/ImageRepository.java deleted file mode 100644 index 84ebc7d..0000000 --- a/api/src/main/java/fr/gameovergne/api/repository/app/ImageRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package fr.gameovergne.api.repository.app; - -import fr.gameovergne.api.model.app.Image; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.Optional; - -public interface ImageRepository extends JpaRepository { - Optional findByName(String name); - Optional findByUrl(String url); -} diff --git a/api/src/main/java/fr/gameovergne/api/repository/app/PlatformRepository.java b/api/src/main/java/fr/gameovergne/api/repository/app/PlatformRepository.java deleted file mode 100644 index 8e7b49f..0000000 --- a/api/src/main/java/fr/gameovergne/api/repository/app/PlatformRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package fr.gameovergne.api.repository.app; - -import fr.gameovergne.api.model.app.Platform; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.Optional; - -public interface PlatformRepository extends JpaRepository { - Optional findByName(String name); -} diff --git a/api/src/main/java/fr/gameovergne/api/repository/app/ProductRepository.java b/api/src/main/java/fr/gameovergne/api/repository/app/ProductRepository.java deleted file mode 100644 index 115e6b4..0000000 --- a/api/src/main/java/fr/gameovergne/api/repository/app/ProductRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package fr.gameovergne.api.repository.app; - -import fr.gameovergne.api.model.app.*; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.Optional; - -public interface ProductRepository extends JpaRepository { - Optional findByTitle(String title); - Optional findByCategory(Category category); - Optional findByPlatform(Platform platform); - Optional findByCondition(Condition condition); -} diff --git a/api/src/main/java/fr/gameovergne/api/service/app/BrandService.java b/api/src/main/java/fr/gameovergne/api/service/app/BrandService.java deleted file mode 100644 index c19a8b9..0000000 --- a/api/src/main/java/fr/gameovergne/api/service/app/BrandService.java +++ /dev/null @@ -1,71 +0,0 @@ -package fr.gameovergne.api.service.app; - -import fr.gameovergne.api.model.app.Brand; -import fr.gameovergne.api.model.app.Platform; -import fr.gameovergne.api.repository.app.BrandRepository; -import jakarta.transaction.Transactional; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -@Service -public class BrandService { - - private final BrandRepository brandRepository; - - @Autowired - public BrandService(BrandRepository brandRepository) { - this.brandRepository = brandRepository; - } - - @Transactional - public void saveBrand(Brand brand) { - if (brand.getId() == null) { - brandRepository.save(brand); - } - } - - public List getAllBrands() { - return brandRepository.findAll(); - } - - public Optional getBrandById(Long id) { - return brandRepository.findById(id); - } - - public Optional getBrandByName(String name) { - return brandRepository.findByName(name); - } - - @Transactional - public Optional updateBrand(Brand brand) { - return brandRepository.findById(brand.getId()).map(existingBrand -> { - existingBrand.setName(brand.getName()); - - List newPlatforms = brand.getPlatforms(); - if (newPlatforms != null) { - if (existingBrand.getPlatforms() == null) { - existingBrand.setPlatforms(new ArrayList<>()); - } else { - existingBrand.getPlatforms().clear(); - } - for (Platform p : newPlatforms) { - p.setBrand(existingBrand); - existingBrand.getPlatforms().add(p); - } - } - - return brandRepository.save(existingBrand); - }); - } - - @Transactional - public Optional deleteBrandById(Long id) { - Optional brand = brandRepository.findById(id); - brand.ifPresent(brandRepository::delete); - return brand; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/service/app/CategoryService.java b/api/src/main/java/fr/gameovergne/api/service/app/CategoryService.java deleted file mode 100644 index 6b76317..0000000 --- a/api/src/main/java/fr/gameovergne/api/service/app/CategoryService.java +++ /dev/null @@ -1,55 +0,0 @@ -package fr.gameovergne.api.service.app; - -import fr.gameovergne.api.model.app.Category; -import fr.gameovergne.api.repository.app.CategoryRepository; -import jakarta.transaction.Transactional; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -@Service -public class CategoryService { - - private final CategoryRepository categoryRepository; - - @Autowired - public CategoryService(CategoryRepository categoryRepository) { - this.categoryRepository = categoryRepository; - } - - @Transactional - public void saveCategory(Category category) { - if (category.getId() == null) { - categoryRepository.save(category); - } - } - - public List getAllCategories() { - return categoryRepository.findAll(); - } - - public Optional getCategoryById(Long id) { - return categoryRepository.findById(id); - } - - public Optional getCategoryByName(String name) { - return categoryRepository.findByName(name); - } - - @Transactional - public Optional updateCategory(Category category) { - return categoryRepository.findById(category.getId()).map(existingCategory -> { - existingCategory.setName(category.getName()); - return categoryRepository.save(existingCategory); - }); - } - - @Transactional - public Optional deleteCategoryById(Long id) { - Optional category = categoryRepository.findById(id); - category.ifPresent(categoryRepository::delete); - return category; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/service/app/ImageService.java b/api/src/main/java/fr/gameovergne/api/service/app/ImageService.java deleted file mode 100644 index a6f3874..0000000 --- a/api/src/main/java/fr/gameovergne/api/service/app/ImageService.java +++ /dev/null @@ -1,60 +0,0 @@ -package fr.gameovergne.api.service.app; - -import fr.gameovergne.api.model.app.Image; -import fr.gameovergne.api.repository.app.ImageRepository; -import jakarta.transaction.Transactional; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -@Service -public class ImageService { - - private final ImageRepository imageRepository; - - @Autowired - public ImageService(ImageRepository imageRepository) { - this.imageRepository = imageRepository; - } - - @Transactional - public void saveImage(Image image) { - if (image.getId() == null) { - imageRepository.save(image); - } - } - - public List getAllImages() { - return imageRepository.findAll(); - } - - public Optional getImageById(Long id) { - return imageRepository.findById(id); - } - - public Optional getImageByName(String name) { - return imageRepository.findByName(name); - } - - public Optional getImageByUrl(String url) { - return imageRepository.findByUrl(url); - } - - @Transactional - public Optional updateImage(Image image) { - return imageRepository.findById(image.getId()).map(existingImage -> { - existingImage.setName(image.getName()); - existingImage.setUrl(image.getUrl()); - return imageRepository.save(existingImage); - }); - } - - @Transactional - public Optional deleteImageById(Long id) { - Optional image = imageRepository.findById(id); - image.ifPresent(imageRepository::delete); - return image; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/service/app/PlatformService.java b/api/src/main/java/fr/gameovergne/api/service/app/PlatformService.java deleted file mode 100644 index 0a7bb2d..0000000 --- a/api/src/main/java/fr/gameovergne/api/service/app/PlatformService.java +++ /dev/null @@ -1,71 +0,0 @@ -package fr.gameovergne.api.service.app; - -import fr.gameovergne.api.model.app.Platform; -import fr.gameovergne.api.model.app.Product; -import fr.gameovergne.api.repository.app.PlatformRepository; -import jakarta.transaction.Transactional; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -@Service -public class PlatformService { - - private final PlatformRepository platformRepository; - - @Autowired - public PlatformService(PlatformRepository platformRepository) { - this.platformRepository = platformRepository; - } - - @Transactional - public void savePlatform(Platform platform) { - if (platform.getId() == null) { - platformRepository.save(platform); - } - } - - public List getAllPlatforms() { - return platformRepository.findAll(); - } - - public Optional getPlatformById(Long id) { - return platformRepository.findById(id); - } - - public Optional getPlatformByName(String name) { - return platformRepository.findByName(name); - } - - @Transactional - public Optional updatePlatform(Platform platform) { - return platformRepository.findById(platform.getId()).map(existingPlatform -> { - existingPlatform.setName(platform.getName()); - existingPlatform.setBrand(platform.getBrand()); - List newProducts = platform.getProducts(); - if (newProducts != null) { - if (existingPlatform.getProducts() == null) { - existingPlatform.setProducts(new ArrayList<>()); - } else { - existingPlatform.getProducts().clear(); - } - for (Product p : newProducts) { - p.setPlatform(existingPlatform); - existingPlatform.getProducts().add(p); - } - } - - return platformRepository.save(existingPlatform); - }); - } - - @Transactional - public Optional deletePlatformById(Long id) { - Optional platform = platformRepository.findById(id); - platform.ifPresent(platformRepository::delete); - return platform; - } -} diff --git a/api/src/main/java/fr/gameovergne/api/service/app/ProductService.java b/api/src/main/java/fr/gameovergne/api/service/app/ProductService.java deleted file mode 100644 index ee14353..0000000 --- a/api/src/main/java/fr/gameovergne/api/service/app/ProductService.java +++ /dev/null @@ -1,65 +0,0 @@ -package fr.gameovergne.api.service.app; - -import fr.gameovergne.api.model.app.Product; -import fr.gameovergne.api.model.app.Platform; -import fr.gameovergne.api.repository.app.ProductRepository; -import jakarta.transaction.Transactional; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -@Service -public class ProductService { - - private final ProductRepository productRepository; - - @Autowired - public ProductService(ProductRepository productRepository) { - this.productRepository = productRepository; - } - - @Transactional - public void saveProduct(Product product) { - if (product.getId() == null) { - productRepository.save(product); - } - } - - public List getAllProducts() { - return productRepository.findAll(); - } - - public Optional getProductById(Long id) { - return productRepository.findById(id); - } - - public Optional getProductByName(String name) { - return productRepository.findByTitle(name); - } - - @Transactional - public Optional updateProduct(Product product) { - return productRepository.findById(product.getId()).map(existingProduct -> { - existingProduct.setTitle(product.getTitle()); - existingProduct.setDescription(product.getDescription()); - existingProduct.setPrice(product.getPrice()); - existingProduct.setQuantity(product.getQuantity()); - existingProduct.setComplete(product.isComplete()); - existingProduct.setManualIncluded(product.isManualIncluded()); - existingProduct.setCategory(product.getCategory()); - existingProduct.setPlatform(product.getPlatform()); - existingProduct.setCondition(product.getCondition()); - return productRepository.save(existingProduct); - }); - } - - @Transactional - public Optional deleteProductById(Long id) { - Optional product = productRepository.findById(id); - product.ifPresent(productRepository::delete); - return product; - } -}