summaryrefslogtreecommitdiff
path: root/clams-server/src/main/java/no/eliashaugsbakk/clams
diff options
context:
space:
mode:
authorElias Haugsbakk <[email protected]>2026-07-27 17:06:00 +0200
committerElias Haugsbakk <[email protected]>2026-07-27 17:06:00 +0200
commit8cbc11810c99bacb92b4bc55f36e1f00104f08d3 (patch)
tree06be8c5ac0db99087a7f130d86891cde92a32782 /clams-server/src/main/java/no/eliashaugsbakk/clams
parent9b716b8406726fea2b27509fdeec9f4fbe32091e (diff)
fix overwriting of timePublished when updating post
Diffstat (limited to 'clams-server/src/main/java/no/eliashaugsbakk/clams')
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/PostController.java6
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/Post.java6
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/PostsRepoSqlite.java2
3 files changed, 11 insertions, 3 deletions
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/PostController.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/PostController.java
index f3aa406..155c271 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/PostController.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/PostController.java
@@ -21,8 +21,12 @@ public class PostController {
}
public void handlePutPost(Context ctx) {
+ String slug = ctx.pathParam("slug");
PostDTO updatedPost = ctx.bodyAsClass(PostDTO.class);
- postsRepo.updatePost(new Post(updatedPost, ctx.pathParam("slug")));
+
+ postsRepo.getPost(slug)
+ .map(existing -> Post.fromUpdated(existing, updatedPost))
+ .ifPresentOrElse(postsRepo::updatePost, () -> ctx.status(404));
}
public void handleDeletePost(Context ctx) {
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/Post.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/Post.java
index dcf0e54..0c3f19c 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/Post.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/Post.java
@@ -5,8 +5,12 @@ import java.time.Instant;
public record Post(String title, String slug, String summary, Instant timePublished, Instant lastEdited, String content,
boolean isPublished) {
public Post(PostDTO postDTO, String slug) {
-
this(postDTO.title(), slug, postDTO.summary(), Instant.now(), Instant.now(), postDTO.content(),
postDTO.isPublished());
}
+
+ public static Post fromUpdated(Post existing, PostDTO postDTO) {
+ return new Post(postDTO.title(), existing.slug(), postDTO.summary(), existing.timePublished(), Instant.now(),
+ postDTO.content(), postDTO.isPublished());
+ }
}
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/PostsRepoSqlite.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/PostsRepoSqlite.java
index 6943d97..5f79745 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/PostsRepoSqlite.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/PostsRepoSqlite.java
@@ -161,7 +161,7 @@ public class PostsRepoSqlite implements PostsRepo {
stmt.setString(2, post.content());
stmt.setString(3, post.summary());
stmt.setString(4, post.timePublished().toString());
- stmt.setString(5, Instant.now().toString());
+ stmt.setString(5, post.lastEdited().toString());
stmt.setBoolean(6, post.isPublished());
stmt.setString(7, post.slug());