diff --git a/src/main/java/io/salmonllama/fashionscapeapi/controller/IgnoredServerController.java b/src/main/java/io/salmonllama/fashionscapeapi/controller/IgnoredServerController.java new file mode 100644 index 0000000..62f42e7 --- /dev/null +++ b/src/main/java/io/salmonllama/fashionscapeapi/controller/IgnoredServerController.java @@ -0,0 +1,66 @@ +package io.salmonllama.fashionscapeapi.controller; + +import io.salmonllama.fashionscapeapi.exception.ResourceNotFoundException; +import io.salmonllama.fashionscapeapi.model.IgnoredServer; +import io.salmonllama.fashionscapeapi.repository.IgnoredServerRepository; +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/ignoredserver") +public class IgnoredServerController { + @Autowired + private IgnoredServerRepository ignoredServerRepository; + + @GetMapping + public ResponseEntity> getIgnoredServers() { + List servers = ignoredServerRepository.findAll(); + + return ResponseEntity.ok(servers); + } + + @GetMapping("/{id}") + public ResponseEntity getIgnoredServerById(@PathVariable(value = "id") String serverId) throws ResourceNotFoundException { + IgnoredServer server = ignoredServerRepository.findById(serverId).orElseThrow(() -> new ResourceNotFoundException("Ignored Server not found for id :: " + serverId)); + + return ResponseEntity.ok(server); + } + + @PostMapping() + public ResponseEntity createIgnoredServer(@Valid @RequestBody IgnoredServer server) { + IgnoredServer createdServer = ignoredServerRepository.save(server); + + return ResponseEntity.ok(createdServer); + } + + @PutMapping("/{id}") + public ResponseEntity updateIgnoredServer(@PathVariable(value = "id") String serverId, @Valid @RequestBody IgnoredServer serverDetails) throws ResourceNotFoundException { + IgnoredServer server = ignoredServerRepository.findById(serverId).orElseThrow(() -> new ResourceNotFoundException("Ignored Server not found for id :: " + serverId)); + + server + .setName(serverDetails.getName()) + .setOwnerId(serverDetails.getOwnerId()) + .setReason(serverDetails.getReason()) + ; + + final IgnoredServer updatedServer = ignoredServerRepository.save(server); + + return ResponseEntity.ok(updatedServer); + } + + @DeleteMapping("/{id}") + public ResponseEntity> deleteIgnoredServer(@PathVariable(value = "id") String serverId) throws ResourceNotFoundException { + IgnoredServer server = ignoredServerRepository.findById(serverId).orElseThrow(() -> new ResourceNotFoundException("Ignored Server not found for id :: " + serverId)); + + ignoredServerRepository.delete(server); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + return ResponseEntity.ok(response); + } +} diff --git a/src/main/java/io/salmonllama/fashionscapeapi/model/IgnoredServer.java b/src/main/java/io/salmonllama/fashionscapeapi/model/IgnoredServer.java new file mode 100644 index 0000000..2e8f82f --- /dev/null +++ b/src/main/java/io/salmonllama/fashionscapeapi/model/IgnoredServer.java @@ -0,0 +1,69 @@ +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_server") +public class IgnoredServer { + private String id; + private String name; + private String ownerId; + private String reason; + private Timestamp added; + + @Id + @Column(name = "id") + public String getId() { + return id; + } + + public IgnoredServer setId(String id) { + this.id = id; + return this; + } + + @Column(name = "name", nullable = false) + public String getName() { + return name; + } + + public IgnoredServer setName(String name) { + this.name = name; + return this; + } + + @Column(name = "owner_id", nullable = false) + public String getOwnerId() { + return ownerId; + } + + public IgnoredServer setOwnerId(String ownerId) { + this.ownerId = ownerId; + return this; + } + + @Column(name = "reason", nullable = false) + public String getReason() { + return reason; + } + + public IgnoredServer setReason(String reason) { + this.reason = reason; + return this; + } + + @Column(name = "added", nullable = false) + public Timestamp getAdded() { + return added; + } + + public IgnoredServer setAdded(Timestamp added) { + this.added = added; + return this; + } +} diff --git a/src/main/java/io/salmonllama/fashionscapeapi/repository/IgnoredServerRepository.java b/src/main/java/io/salmonllama/fashionscapeapi/repository/IgnoredServerRepository.java new file mode 100644 index 0000000..9768ad6 --- /dev/null +++ b/src/main/java/io/salmonllama/fashionscapeapi/repository/IgnoredServerRepository.java @@ -0,0 +1,7 @@ +package io.salmonllama.fashionscapeapi.repository; + +import io.salmonllama.fashionscapeapi.model.IgnoredServer; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface IgnoredServerRepository extends JpaRepository { +}