ajout fav , comment et quiz

TommyVersion
parent b6e2601b90
commit 546cb5dfc4

@ -0,0 +1,103 @@
package com.example.wtf.controller;
import com.example.wtf.exception.ResourceNotFound;
import com.example.wtf.model.Commentary;
import com.example.wtf.repository.CommentaryRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.EntityModel;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
@RestController
@RequestMapping("/commentaries")
public class CommentaryController {
@Autowired
private CommentaryRepository repository;
@GetMapping("/get")
public @ResponseBody CollectionModel<EntityModel<Commentary>> getCommentaries() {
List<EntityModel<Commentary>> commentaries = new ArrayList<>();
for (Commentary commentary : repository.findAll()) {
EntityModel<Commentary> commentaryResource = EntityModel.of(
commentary,
linkTo(methodOn(CommentaryController.class).getCommentary(commentary.getId())).withSelfRel(),
linkTo(methodOn(CommentaryController.class).deleteCommentary(commentary.getId())).withRel("Delete Commentary")
);
commentaries.add(commentaryResource);
}
return CollectionModel.of(
commentaries,
linkTo(methodOn(CommentaryController.class).addCommentary(new Commentary())).withRel("Add Commentary")
);
}
@GetMapping("/get/{id}")
public @ResponseBody EntityModel<Commentary> getCommentary(@PathVariable Long id) {
Commentary commentary = repository.findById(id)
.orElseThrow(() -> new ResourceNotFound("Commentary not found"));
return EntityModel.of(
commentary,
linkTo(methodOn(CommentaryController.class).deleteCommentary(commentary.getId())).withRel("Delete Commentary"),
linkTo(methodOn(CommentaryController.class).getCommentaries()).withRel("Commentaries")
);
}
@PostMapping("/add")
public @ResponseBody EntityModel<Commentary> addCommentary(@RequestBody Commentary commentary) {
repository.save(commentary);
return EntityModel.of(
commentary,
linkTo(methodOn(CommentaryController.class).getCommentary(commentary.getId())).withSelfRel(),
linkTo(methodOn(CommentaryController.class).deleteCommentary(commentary.getId())).withRel("Delete Commentary"),
linkTo(methodOn(CommentaryController.class).getCommentaries()).withRel("Commentaries")
);
}
@PutMapping("/update/{id}")
public @ResponseBody EntityModel<Commentary> updateCommentary(@PathVariable Long id, @RequestBody Commentary update) {
Commentary commentary = repository.findById(id)
.orElseThrow(() -> new ResourceNotFound("Commentary not found"));
if (update.getUser() != null) {
commentary.setUser(update.getUser());
}
if (update.getQuote() != null) {
commentary.setQuote(update.getQuote());
}
if (update.getComment() != null && !update.getComment().isEmpty()) {
commentary.setComment(update.getComment());
}
if (update.getDateC() != null) {
commentary.setDateC(update.getDateC());
}
repository.save(commentary);
return EntityModel.of(
commentary,
linkTo(methodOn(CommentaryController.class).updateCommentary(id, new Commentary())).withSelfRel()
);
}
@DeleteMapping("/delete/{id}")
public @ResponseBody EntityModel<Commentary> deleteCommentary(@PathVariable Long id) {
Commentary commentary = repository.findById(id)
.orElseThrow(() -> new ResourceNotFound("Commentary not found"));
repository.delete(commentary);
return EntityModel.of(
commentary,
linkTo(methodOn(CommentaryController.class).getCommentaries()).withRel("Commentaries")
);
}
}

@ -0,0 +1,97 @@
package com.example.wtf.controller;
import com.example.wtf.exception.ResourceNotFound;
import com.example.wtf.model.Favorite;
import com.example.wtf.repository.FavoriteRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.EntityModel;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
@RestController
@RequestMapping("/favorites")
public class FavoriteController {
@Autowired
private FavoriteRepository repository;
@GetMapping("/get")
public @ResponseBody CollectionModel<EntityModel<Favorite>> getFavorites() {
List<EntityModel<Favorite>> favorites = new ArrayList<>();
for (Favorite favorite : repository.findAll()) {
EntityModel<Favorite> favoriteResource = EntityModel.of(
favorite,
linkTo(methodOn(FavoriteController.class).getFavorite(favorite.getId())).withSelfRel(),
linkTo(methodOn(FavoriteController.class).deleteFavorite(favorite.getId())).withRel("Delete Favorite")
);
favorites.add(favoriteResource);
}
return CollectionModel.of(
favorites,
linkTo(methodOn(FavoriteController.class).addFavorite(new Favorite())).withRel("Add Favorite")
);
}
@GetMapping("/get/{id}")
public @ResponseBody EntityModel<Favorite> getFavorite(@PathVariable Long id) {
Favorite favorite = repository.findById(id)
.orElseThrow(() -> new ResourceNotFound("Favorite not found"));
return EntityModel.of(
favorite,
linkTo(methodOn(FavoriteController.class).deleteFavorite(favorite.getId())).withRel("Delete Favorite"),
linkTo(methodOn(FavoriteController.class).getFavorites()).withRel("Favorites")
);
}
@PostMapping("/add")
public @ResponseBody EntityModel<Favorite> addFavorite(@RequestBody Favorite favorite) {
repository.save(favorite);
return EntityModel.of(
favorite,
linkTo(methodOn(FavoriteController.class).getFavorite(favorite.getId())).withSelfRel(),
linkTo(methodOn(FavoriteController.class).deleteFavorite(favorite.getId())).withRel("Delete Favorite"),
linkTo(methodOn(FavoriteController.class).getFavorites()).withRel("Favorites")
);
}
@PutMapping("/update/{id}")
public @ResponseBody EntityModel<Favorite> updateFavorite(@PathVariable Long id, @RequestBody Favorite update) {
Favorite favorite = repository.findById(id)
.orElseThrow(() -> new ResourceNotFound("Favorite not found"));
if (update.getUser() != null) {
favorite.setUser(update.getUser());
}
if (update.getQuote() != null) {
favorite.setQuote(update.getQuote());
}
repository.save(favorite);
return EntityModel.of(
favorite,
linkTo(methodOn(FavoriteController.class).updateFavorite(id, new Favorite())).withSelfRel()
);
}
@DeleteMapping("/delete/{id}")
public @ResponseBody EntityModel<Favorite> deleteFavorite(@PathVariable Long id) {
Favorite favorite = repository.findById(id)
.orElseThrow(() -> new ResourceNotFound("Favorite not found"));
repository.delete(favorite);
return EntityModel.of(
favorite,
linkTo(methodOn(FavoriteController.class).getFavorites()).withRel("Favorites")
);
}
}

@ -0,0 +1,100 @@
package com.example.wtf.controller;
import com.example.wtf.exception.ResourceNotFound;
import com.example.wtf.model.Quiz;
import com.example.wtf.repository.QuizRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.EntityModel;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
@RestController
@RequestMapping("/quizzes")
public class QuizController {
@Autowired
private QuizRepository repository;
@GetMapping("/get")
public @ResponseBody CollectionModel<EntityModel<Quiz>> getQuizzes() {
List<EntityModel<Quiz>> quizzes = new ArrayList<>();
for (Quiz quiz : repository.findAll()) {
EntityModel<Quiz> quizResource = EntityModel.of(
quiz,
linkTo(methodOn(QuizController.class).getQuiz(quiz.getId())).withSelfRel(),
linkTo(methodOn(QuizController.class).deleteQuiz(quiz.getId())).withRel("Delete Quiz")
);
quizzes.add(quizResource);
}
return CollectionModel.of(
quizzes,
linkTo(methodOn(QuizController.class).addQuiz(new Quiz())).withRel("Add Quiz")
);
}
@GetMapping("/get/{id}")
public @ResponseBody EntityModel<Quiz> getQuiz(@PathVariable Long id) {
Quiz quiz = repository.findById(id)
.orElseThrow(() -> new ResourceNotFound("Quiz not found"));
return EntityModel.of(
quiz,
linkTo(methodOn(QuizController.class).deleteQuiz(quiz.getId())).withRel("Delete Quiz"),
linkTo(methodOn(QuizController.class).getQuizzes()).withRel("Quizzes")
);
}
@PostMapping("/add")
public @ResponseBody EntityModel<Quiz> addQuiz(@RequestBody Quiz quiz) {
repository.save(quiz);
return EntityModel.of(
quiz,
linkTo(methodOn(QuizController.class).getQuiz(quiz.getId())).withSelfRel(),
linkTo(methodOn(QuizController.class).deleteQuiz(quiz.getId())).withRel("Delete Quiz"),
linkTo(methodOn(QuizController.class).getQuizzes()).withRel("Quizzes")
);
}
@PutMapping("/update/{id}")
public @ResponseBody EntityModel<Quiz> updateQuiz(@PathVariable Long id, @RequestBody Quiz update) {
Quiz quiz = repository.findById(id)
.orElseThrow(() -> new ResourceNotFound("Quiz not found"));
if (update.getTitle() != null && !update.getTitle().isEmpty()) {
quiz.setTitle(update.getTitle());
}
if (update.getNbQuest() != null) {
quiz.setNbQuest(update.getNbQuest());
}
if (update.getImage() != null) {
quiz.setImage(update.getImage());
}
repository.save(quiz);
return EntityModel.of(
quiz,
linkTo(methodOn(QuizController.class).updateQuiz(id, new Quiz())).withSelfRel()
);
}
@DeleteMapping("/delete/{id}")
public @ResponseBody EntityModel<Quiz> deleteQuiz(@PathVariable Long id) {
Quiz quiz = repository.findById(id)
.orElseThrow(() -> new ResourceNotFound("Quiz not found"));
repository.delete(quiz);
return EntityModel.of(
quiz,
linkTo(methodOn(QuizController.class).getQuizzes()).withRel("Quizzes")
);
}
}

@ -0,0 +1,73 @@
package com.example.wtf.model;
import jakarta.persistence.*;
import java.time.LocalDateTime;
@Entity
public class Commentary {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private @Id Long id;
@ManyToOne(cascade = CascadeType.ALL)
private User user;
@ManyToOne(cascade = CascadeType.ALL)
private Quote quote;
private String comment;
private LocalDateTime dateC;
public Commentary() {
}
public Commentary(User user, Quote quote, String comment, LocalDateTime dateC) {
this.user = user;
this.quote = quote;
this.comment = comment;
this.dateC = dateC;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Quote getQuote() {
return quote;
}
public void setQuote(Quote quote) {
this.quote = quote;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public LocalDateTime getDateC() {
return dateC;
}
public void setDateC(LocalDateTime dateC) {
this.dateC = dateC;
}
}

@ -0,0 +1,49 @@
package com.example.wtf.model;
import jakarta.persistence.*;
@Entity
public class Favorite {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private @Id Long id;
@ManyToOne(cascade = CascadeType.ALL)
private User user;
@ManyToOne(cascade = CascadeType.ALL)
private Quote quote;
public Favorite() {}
public Favorite(User user, Quote quote) {
this.user = user;
this.quote = quote;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Quote getQuote() {
return quote;
}
public void setQuote(Quote quote) {
this.quote = quote;
}
}

@ -0,0 +1,59 @@
package com.example.wtf.model;
import jakarta.persistence.*;
@Entity
public class Quiz {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private @Id Long id;
private String title;
private Integer nbQuest;
@ManyToOne(cascade = CascadeType.ALL)
private Image image;
public Quiz() {
}
public Quiz(String title, Integer nbQuest, Image image) {
this.title = title;
this.nbQuest = nbQuest;
this.image = image;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getNbQuest() {
return nbQuest;
}
public void setNbQuest(Integer nbQuest) {
this.nbQuest = nbQuest;
}
public Image getImage() {
return image;
}
public void setImage(Image image) {
this.image = image;
}
}

@ -0,0 +1,4 @@
package com.example.wtf.model;
public class Quote {
}

@ -0,0 +1,13 @@
package com.example.wtf.repository;
import com.example.wtf.model.Commentary;
import com.example.wtf.model.Image;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
public interface CommentaryRepository extends CrudRepository<Commentary, Long> {
Optional<Commentary> findById(Long id);
}

@ -0,0 +1,13 @@
package com.example.wtf.repository;
import com.example.wtf.model.Commentary;
import com.example.wtf.model.Favorite;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
public interface FavoriteRepository extends CrudRepository<Favorite, Long> {
Optional<Favorite> findById(Long id);
}

@ -0,0 +1,13 @@
package com.example.wtf.repository;
import com.example.wtf.model.Commentary;
import com.example.wtf.model.Quiz;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
public interface QuizRepository extends CrudRepository<Quiz, Long> {
Optional<Quiz> findById(Long id);
}
Loading…
Cancel
Save