diff --git a/pom.xml b/pom.xml
index 4edc28a..6b766af 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
UTF-8
11
- 0.3.0-SNAPSHOT
+ 0.3.1-SNAPSHOT
diff --git a/src/main/java/de/bstly/board/businesslogic/CommentManager.java b/src/main/java/de/bstly/board/businesslogic/CommentManager.java
index bc0dde5..2b6c94e 100644
--- a/src/main/java/de/bstly/board/businesslogic/CommentManager.java
+++ b/src/main/java/de/bstly/board/businesslogic/CommentManager.java
@@ -112,25 +112,27 @@ public class CommentManager {
}
if (!comment.getMetadata().containsKey("points")) {
comment.getMetadata().put("points",
- voteManager.getPoints(comment.getId(), Types.entry));
+ voteManager.getPoints(comment.getId(), Types.comment));
}
- if (!comment.getMetadata().containsKey("vote")) {
- comment.getMetadata().put("vote",
- !voteRepository.exists(qVote.target.eq(comment.getId())
+
+ if (!comment.getMetadata().containsKey("upvoted")) {
+ comment.getMetadata().put("upvoted",
+ voteRepository.exists(qVote.target.eq(comment.getId())
.and(qVote.targetType.eq(Types.comment)).and(qVote.type.eq(VoteType.up))
.and(qVote.author.eq(username))));
}
- if (!comment.getMetadata().containsKey("unvote")) {
- comment.getMetadata().put("unvote",
+
+ if (!comment.getMetadata().containsKey("downvoted")) {
+ comment.getMetadata().put("downvoted",
voteRepository.exists(qVote.target.eq(comment.getId())
.and(qVote.targetType.eq(Types.comment))
- .and(qVote.type.eq(VoteType.up).and(qVote.author.eq(username)))));
+ .and(qVote.type.eq(VoteType.down)).and(qVote.author.eq(username))));
}
- if (!comment.getMetadata().containsKey("downvote")) {
- comment.getMetadata()
- .put("downvote",
- !voteRepository.exists(qVote.target.eq(comment.getId())
- .and(qVote.targetType.eq(Types.comment))
+
+ if (!comment.getMetadata().containsKey("unvote")) {
+ comment.getMetadata().put("unvote",
+ voteRepository.exists(
+ qVote.target.eq(comment.getId()).and(qVote.targetType.eq(Types.comment))
.and(qVote.author.eq(username))));
}
}
diff --git a/src/main/java/de/bstly/board/businesslogic/EntryManager.java b/src/main/java/de/bstly/board/businesslogic/EntryManager.java
index 370e163..c051457 100644
--- a/src/main/java/de/bstly/board/businesslogic/EntryManager.java
+++ b/src/main/java/de/bstly/board/businesslogic/EntryManager.java
@@ -89,22 +89,26 @@ public class EntryManager {
if (!entry.getMetadata().containsKey("points")) {
entry.getMetadata().put("points", voteManager.getPoints(entry.getId(), Types.entry));
}
- if (!entry.getMetadata().containsKey("vote")) {
- entry.getMetadata().put("vote",
- !voteRepository.exists(qVote.target.eq(entry.getId())
+
+ if (!entry.getMetadata().containsKey("upvoted")) {
+ entry.getMetadata().put("upvoted",
+ voteRepository.exists(qVote.target.eq(entry.getId())
.and(qVote.targetType.eq(Types.entry)).and(qVote.type.eq(VoteType.up))
.and(qVote.author.eq(username))));
}
- if (!entry.getMetadata().containsKey("unvote")) {
- entry.getMetadata().put("unvote",
+
+ if (!entry.getMetadata().containsKey("downvoted")) {
+ entry.getMetadata().put("downvoted",
voteRepository.exists(qVote.target.eq(entry.getId())
.and(qVote.targetType.eq(Types.entry))
- .and(qVote.type.eq(VoteType.up).and(qVote.author.eq(username)))));
+ .and(qVote.type.eq(VoteType.down)).and(qVote.author.eq(username))));
}
- if (!entry.getMetadata().containsKey("downvote")) {
- entry.getMetadata().put("downvote",
- !voteRepository.exists(qVote.target.eq(entry.getId())
- .and(qVote.targetType.eq(Types.entry)).and(qVote.author.eq(username))));
+
+ if (!entry.getMetadata().containsKey("unvote")) {
+ entry.getMetadata().put("unvote",
+ voteRepository.exists(
+ qVote.target.eq(entry.getId()).and(qVote.targetType.eq(Types.entry))
+ .and(qVote.author.eq(username))));
}
}
diff --git a/src/main/java/de/bstly/board/controller/VoteController.java b/src/main/java/de/bstly/board/controller/VoteController.java
index fb5a907..b4a0f9c 100644
--- a/src/main/java/de/bstly/board/controller/VoteController.java
+++ b/src/main/java/de/bstly/board/controller/VoteController.java
@@ -47,7 +47,7 @@ public class VoteController extends BaseController {
}
@PreAuthorize("isAuthenticated()")
- @PutMapping("/e/{id}")
+ @PutMapping("/e/{id}/up")
public void voteEntryUp(@PathVariable("id") Long id) {
if (!entryManager.exists(id)) {
throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
@@ -68,7 +68,7 @@ public class VoteController extends BaseController {
}
@PreAuthorize("isAuthenticated()")
- @DeleteMapping("/e/{id}")
+ @PutMapping("/e/{id}/down")
public void voteEntryDown(@PathVariable("id") Long id) {
if (!entryManager.exists(id)) {
throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
@@ -88,6 +88,21 @@ public class VoteController extends BaseController {
}
}
+ @PreAuthorize("isAuthenticated()")
+ @DeleteMapping("/e/{id}")
+ public void unvoteEntry(@PathVariable("id") Long id) {
+ if (!entryManager.exists(id)) {
+ throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
+ }
+
+ Vote vote = voteManager.get(getCurrentUsername(), Types.entry, id);
+ if (vote == null) {
+ throw new EntityResponseStatusException(HttpStatus.NOT_MODIFIED);
+ }
+
+ voteManager.delete(vote);
+ }
+
@PreAuthorize("isAuthenticated()")
@GetMapping("/c/{id}")
public long getCommentPoints(@PathVariable("id") Long id) {
@@ -99,7 +114,7 @@ public class VoteController extends BaseController {
}
@PreAuthorize("isAuthenticated()")
- @PutMapping("/c/{id}")
+ @PutMapping("/c/{id}/up")
public void voteCommentUp(@PathVariable("id") Long id) {
if (!commentManager.exists(id)) {
throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
@@ -120,7 +135,7 @@ public class VoteController extends BaseController {
}
@PreAuthorize("isAuthenticated()")
- @DeleteMapping("/c/{id}")
+ @PutMapping("/c/{id}/down")
public void voteCommentDown(@PathVariable("id") Long id) {
if (!commentManager.exists(id)) {
throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
@@ -140,4 +155,19 @@ public class VoteController extends BaseController {
}
}
+ @PreAuthorize("isAuthenticated()")
+ @DeleteMapping("/c/{id}")
+ public void unvoteComment(@PathVariable("id") Long id) {
+ if (!commentManager.exists(id)) {
+ throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
+ }
+
+ Vote vote = voteManager.get(getCurrentUsername(), Types.comment, id);
+ if (vote == null) {
+ throw new EntityResponseStatusException(HttpStatus.NOT_MODIFIED);
+ }
+
+ voteManager.delete(vote);
+ }
+
}