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 { + +}