From c91f8e38eddadb7ffab7e7922d7ca221d15c00e7 Mon Sep 17 00:00:00 2001 From: Alex Gryczewski Date: Tue, 12 Sep 2023 12:05:34 -0400 Subject: [PATCH] Add MRC for IgnoredUsers (formerly UserBlacklist) --- .../controller/IgnoredUserController.java | 64 +++++++++++++++++++ .../fashionscapeapi/model/IgnoredUser.java | 46 +++++++++++++ .../repository/IgnoredUserRepository.java | 8 +++ 3 files changed, 118 insertions(+) create mode 100644 src/main/java/io/salmonllama/fashionscapeapi/controller/IgnoredUserController.java create mode 100644 src/main/java/io/salmonllama/fashionscapeapi/model/IgnoredUser.java create mode 100644 src/main/java/io/salmonllama/fashionscapeapi/repository/IgnoredUserRepository.java diff --git a/src/main/java/io/salmonllama/fashionscapeapi/controller/IgnoredUserController.java b/src/main/java/io/salmonllama/fashionscapeapi/controller/IgnoredUserController.java new file mode 100644 index 0000000..019db02 --- /dev/null +++ b/src/main/java/io/salmonllama/fashionscapeapi/controller/IgnoredUserController.java @@ -0,0 +1,64 @@ +package io.salmonllama.fashionscapeapi.controller; + +import io.salmonllama.fashionscapeapi.exception.ResourceNotFoundException; +import io.salmonllama.fashionscapeapi.model.IgnoredUser; +import io.salmonllama.fashionscapeapi.repository.IgnoredUserRepository; +import jakarta.validation.Valid; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/v1/ignoreduser") +public class IgnoredUserController { + @Autowired + private IgnoredUserRepository ignoredUserRepository; + + @GetMapping() + public ResponseEntity> getIgnoredUsers() { + List users = ignoredUserRepository.findAll(); + + return ResponseEntity.ok(users); + } + + @GetMapping("/{id}") + public ResponseEntity getIgnoredUserById(@PathVariable(value = "id") String userId) throws ResourceNotFoundException { + IgnoredUser user = ignoredUserRepository.findById(userId).orElseThrow(() -> new ResourceNotFoundException("Ignored User not found for id :: " + userId)); + + return ResponseEntity.ok(user); + } + + @PostMapping() + public ResponseEntity createIgnoredUser(@Valid @RequestBody IgnoredUser user) { + IgnoredUser createdUser = ignoredUserRepository.save(user); + + return ResponseEntity.ok(createdUser); + } + + @PutMapping("/{id}") + public ResponseEntity updateIgnoredGallery(@PathVariable(value = "id") String userId, @Valid @RequestBody IgnoredUser userDetails) throws ResourceNotFoundException { + IgnoredUser user = ignoredUserRepository.findById(userId).orElseThrow(() -> new ResourceNotFoundException("Ignored User not found for id :: " + userId)); + + user + .setReason(userDetails.getReason()) + ; + + final IgnoredUser updatedUser = ignoredUserRepository.save(user); + + return ResponseEntity.ok(updatedUser); + } + + @DeleteMapping("/{id}") + public ResponseEntity> deleteIgnoredUser(@PathVariable(value = "id") String userId) throws ResourceNotFoundException { + IgnoredUser user = ignoredUserRepository.findById(userId).orElseThrow(() -> new ResourceNotFoundException("Ignored User not found for id :: " + userId)); + + ignoredUserRepository.delete(user); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + return ResponseEntity.ok(response); + } +} diff --git a/src/main/java/io/salmonllama/fashionscapeapi/model/IgnoredUser.java b/src/main/java/io/salmonllama/fashionscapeapi/model/IgnoredUser.java new file mode 100644 index 0000000..e1c0ede --- /dev/null +++ b/src/main/java/io/salmonllama/fashionscapeapi/model/IgnoredUser.java @@ -0,0 +1,46 @@ +package io.salmonllama.fashionscapeapi.model; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +import java.sql.Timestamp; + +@Entity +@Table(name = "ignored_user") +public class IgnoredUser { + private String id; + private String reason; + private Timestamp added; + + public IgnoredUser() {} + + @Id + @Column(name = "id") + public String getId() { + return id; + } + public IgnoredUser setId(String id) { + this.id = id; + return this; + } + + @Column(name = "reason") + public String getReason() { + return reason; + } + public IgnoredUser setReason(String reason) { + this.reason = reason; + return this; + } + + @Column(name = "added") + public Timestamp getAdded() { + return added; + } + public IgnoredUser setAdded(Timestamp added) { + this.added = added; + return this; + } +} diff --git a/src/main/java/io/salmonllama/fashionscapeapi/repository/IgnoredUserRepository.java b/src/main/java/io/salmonllama/fashionscapeapi/repository/IgnoredUserRepository.java new file mode 100644 index 0000000..50eabaf --- /dev/null +++ b/src/main/java/io/salmonllama/fashionscapeapi/repository/IgnoredUserRepository.java @@ -0,0 +1,8 @@ +package io.salmonllama.fashionscapeapi.repository; + +import io.salmonllama.fashionscapeapi.model.IgnoredUser; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface IgnoredUserRepository extends JpaRepository { + +}