From 0856cac15a18a438e1e5f752be97ed6af70d7936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=A3lie=20*?= <44349276+tetelie@users.noreply.github.com> Date: Fri, 27 Feb 2026 22:31:57 +0100 Subject: [PATCH] add graph --- .../fr/tetelie/crawler/web/PriceHistory.java | 25 +++++++++++ .../crawler/web/PriceHistoryRepository.java | 8 ++++ .../crawler/web/ProductController.java | 9 ++++ .../crawler/web/ProductRepository.java | 3 +- src/main/resources/templates/index.html | 45 +++++++++++++++++++ 5 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 src/main/java/fr/tetelie/crawler/web/PriceHistory.java create mode 100644 src/main/java/fr/tetelie/crawler/web/PriceHistoryRepository.java diff --git a/src/main/java/fr/tetelie/crawler/web/PriceHistory.java b/src/main/java/fr/tetelie/crawler/web/PriceHistory.java new file mode 100644 index 0000000..42f971f --- /dev/null +++ b/src/main/java/fr/tetelie/crawler/web/PriceHistory.java @@ -0,0 +1,25 @@ +package fr.tetelie.crawler.web; + +import jakarta.persistence.*; +import java.time.LocalDateTime; + +@Entity +@Table(name = "price_history") +public class PriceHistory { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private Float price; + + @Column(name = "date_check") + private LocalDateTime dateCheck; + + @ManyToOne + @JoinColumn(name = "product_id") + private Product product; + + // Getters & Setters + public Float getPrice() { return price; } + public LocalDateTime getDateCheck() { return dateCheck; } +} \ No newline at end of file diff --git a/src/main/java/fr/tetelie/crawler/web/PriceHistoryRepository.java b/src/main/java/fr/tetelie/crawler/web/PriceHistoryRepository.java new file mode 100644 index 0000000..bac3195 --- /dev/null +++ b/src/main/java/fr/tetelie/crawler/web/PriceHistoryRepository.java @@ -0,0 +1,8 @@ +package fr.tetelie.crawler.web; + +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + +public interface PriceHistoryRepository extends JpaRepository { + List findByProductIdOrderByDateCheckAsc(Integer productId); +} diff --git a/src/main/java/fr/tetelie/crawler/web/ProductController.java b/src/main/java/fr/tetelie/crawler/web/ProductController.java index d416eec..58954e2 100644 --- a/src/main/java/fr/tetelie/crawler/web/ProductController.java +++ b/src/main/java/fr/tetelie/crawler/web/ProductController.java @@ -34,4 +34,13 @@ public class ProductController { productRepository.deleteById(id); return "redirect:/"; } + + @Autowired + private PriceHistoryRepository priceHistoryRepository; + + @GetMapping("/api/prices/{id}") + @ResponseBody // Renvoie du JSON au lieu d'une page HTML + public List getPriceData(@PathVariable Integer id) { + return priceHistoryRepository.findByProductIdOrderByDateCheckAsc(id); + } } \ No newline at end of file diff --git a/src/main/java/fr/tetelie/crawler/web/ProductRepository.java b/src/main/java/fr/tetelie/crawler/web/ProductRepository.java index 8f7786a..b585b43 100644 --- a/src/main/java/fr/tetelie/crawler/web/ProductRepository.java +++ b/src/main/java/fr/tetelie/crawler/web/ProductRepository.java @@ -3,7 +3,8 @@ package fr.tetelie.crawler.web; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface ProductRepository extends JpaRepository { - // Tu as maintenant accès à : save(), findAll(), deleteById(), etc. } \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index eac6725..99080ad 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -29,5 +29,50 @@ + + + +
+

+ +
+ +
+ + +
\ No newline at end of file