@@ -0,0 +1,58 @@ | |||
package com.springboot.app.JibberJabberRestAPI; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import org.hibernate.annotations.CreationTimestamp; | |||
import javax.persistence.*; | |||
import java.util.Date; | |||
import java.util.Objects; | |||
@Entity | |||
@Getter | |||
@Setter | |||
@Table(name = "jibbers") | |||
public class Jibber { | |||
@Id | |||
@GeneratedValue(strategy = GenerationType.IDENTITY) | |||
private int id; | |||
private String message; | |||
@CreationTimestamp | |||
@Column(name = "created_date") | |||
private Date createdDate; | |||
Jibber () {} | |||
Jibber(String message, Date createdDate) { | |||
this.message = message; | |||
this.createdDate = createdDate; | |||
} | |||
@Override | |||
public boolean equals(Object o) { | |||
if (this == o) | |||
return true; | |||
if (!(o instanceof Jibber)) | |||
return false; | |||
Jibber jibber = (Jibber) o; | |||
return Objects.equals(this.id, jibber.id) && Objects.equals(this.message, jibber.message) | |||
&& Objects.equals(this.createdDate, jibber.createdDate); | |||
} | |||
@Override | |||
public int hashCode() { | |||
return Objects.hash(this.id, this.message, this.createdDate); | |||
} | |||
@Override | |||
public String toString() { | |||
return "Jibber{" + "id=" + this.id + ", message='" + this.message + '\'' + ", createdDate='" + this.createdDate | |||
+ '\'' + '}'; | |||
} | |||
} |
@@ -0,0 +1,32 @@ | |||
package com.springboot.app.JibberJabberRestAPI; | |||
import org.springframework.web.bind.annotation.*; | |||
import java.util.List; | |||
@RestController | |||
public class JibberController { | |||
private final JibberRepository repository; | |||
public JibberController(JibberRepository repository) { | |||
this.repository = repository; | |||
} | |||
@GetMapping("/jibbers") | |||
List<Jibber> all() {return repository.findAll();} | |||
@PostMapping("/jibbers") | |||
Jibber newJibber(@RequestBody Jibber newJibber) { return repository.save(newJibber);} | |||
//single item(id) | |||
@GetMapping("jibbers/{id}") | |||
Jibber one(@PathVariable int id) { | |||
return repository.findById(id) | |||
.orElseThrow(() -> new JibberNotFoundException((id))); | |||
} | |||
} |
@@ -0,0 +1,19 @@ | |||
package com.springboot.app.JibberJabberRestAPI; | |||
import org.springframework.http.HttpStatus; | |||
import org.springframework.web.bind.annotation.ControllerAdvice; | |||
import org.springframework.web.bind.annotation.ExceptionHandler; | |||
import org.springframework.web.bind.annotation.ResponseBody; | |||
import org.springframework.web.bind.annotation.ResponseStatus; | |||
@ControllerAdvice | |||
public class JibberNotFoundAdvice { | |||
@ResponseBody | |||
@ExceptionHandler(JibberNotFoundException.class) | |||
@ResponseStatus(HttpStatus.NOT_FOUND) | |||
String jibberNotFoundHandler(JibberNotFoundException ex) { | |||
return ex.getMessage(); | |||
} | |||
} |
@@ -0,0 +1,8 @@ | |||
package com.springboot.app.JibberJabberRestAPI; | |||
class JibberNotFoundException extends RuntimeException { | |||
JibberNotFoundException(Integer id) { | |||
super("Could not find Jibber" + id); | |||
} | |||
} |
@@ -0,0 +1,6 @@ | |||
package com.springboot.app.JibberJabberRestAPI; | |||
import org.springframework.data.jpa.repository.JpaRepository; | |||
public interface JibberRepository extends JpaRepository<Jibber, Integer> { | |||
} |