summaryrefslogtreecommitdiff
path: root/clams-server/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'clams-server/src/main/java')
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/BlogController.java12
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/Post.java2
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/PostMetaData.java2
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/BlogPostRepoSqlite.java21
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/SqliteManager.java3
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/BlogSearchService.java5
6 files changed, 24 insertions, 21 deletions
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/BlogController.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/BlogController.java
index b82c3fe..58ce6d4 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/BlogController.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/BlogController.java
@@ -40,6 +40,12 @@ public class BlogController {
}
Post post = postOpt.get();
+
+ if (!post.isPublished()) {
+ ctx.status(404);
+ return;
+ }
+
String formattedDate = post.timePublished().atZone(OSLO_ZONE).format(DATE_FORMATTER);
ctx.render("templates/post.html", Map.of(
@@ -63,8 +69,9 @@ public class BlogController {
}
private void handleBlogIndex(Context ctx) {
-
- List<PostMetaData> allPosts = blogPostRepo.listPostsMetaData();
+ List<PostMetaData> allPosts = blogPostRepo.listPostsMetaData().stream()
+ .filter(PostMetaData::isPublished)
+ .toList();
Map<Integer, List<PostMetaData>> postsByYear = groupPostsByYear(allPosts);
// Manually list featured posts
@@ -92,6 +99,7 @@ public class BlogController {
List<PostMetaData> results = query.isEmpty() ? List.of() : blogSearchService.searchPosts(query);
List<SearchResultItem> resultItems = results.stream()
+ .filter(PostMetaData::isPublished)
.map(post -> new SearchResultItem(
post.title(),
post.slug(),
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 833c524..f5e963f 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
@@ -2,5 +2,5 @@ package no.eliashaugsbakk.clams.server.model;
import java.time.Instant;
-public record Post(String title, String slug, String summary, Instant timePublished, String content) {
+public record Post(String title, String slug, String summary, Instant timePublished, String content, boolean isPublished) {
}
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/PostMetaData.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/PostMetaData.java
index 44d667d..175fc55 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/PostMetaData.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/model/PostMetaData.java
@@ -2,5 +2,5 @@ package no.eliashaugsbakk.clams.server.model;
import java.time.Instant;
-public record PostMetaData(String title, String slug, String summary, Instant timePublished, Instant lastEdit) {
+public record PostMetaData(String title, String slug, String summary, Instant timePublished, Instant lastEdit, Boolean isPublished) {
}
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/BlogPostRepoSqlite.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/BlogPostRepoSqlite.java
index 77a7407..9da6818 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/BlogPostRepoSqlite.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/BlogPostRepoSqlite.java
@@ -21,7 +21,7 @@ public class BlogPostRepoSqlite implements BlogPostRepo {
@Override
public List<PostMetaData> listPostsMetaData() {
String sql = """
- SELECT title, slug, summary, published, last_edited
+ SELECT title, slug, summary, published, last_edited, is_published
FROM posts
ORDER BY published DESC
""";
@@ -36,13 +36,12 @@ public class BlogPostRepoSqlite implements BlogPostRepo {
String title = resultSet.getString("title");
String slug = resultSet.getString("slug");
String summary = resultSet.getString("summary");
-
Instant published = Instant.parse(resultSet.getString("published"));
-
String lastEditRaw = resultSet.getString("last_edited");
Instant lastEdit = (lastEditRaw != null) ? Instant.parse(lastEditRaw) : null;
+ boolean isPublished = resultSet.getBoolean("is_published");
- posts.add(new PostMetaData(title, slug, summary, published, lastEdit));
+ posts.add(new PostMetaData(title, slug, summary, published, lastEdit, isPublished));
}
return posts;
@@ -55,7 +54,7 @@ public class BlogPostRepoSqlite implements BlogPostRepo {
@Override
public Optional<Post> getPost(String slug) {
String sql = """
- SELECT title, slug, summary, content, published
+ SELECT title, slug, summary, content, published, is_published
FROM posts
WHERE slug = ?
""";
@@ -71,11 +70,10 @@ public class BlogPostRepoSqlite implements BlogPostRepo {
String postSlug = resultSet.getString("slug");
String summary = resultSet.getString("summary");
String content = resultSet.getString("content");
+ Instant published = Instant.parse(resultSet.getString("published"));
+ boolean isPublished = resultSet.getBoolean("is_published");
- String publishedRaw = resultSet.getString("published");
- Instant timePublished = Instant.parse(publishedRaw);
-
- return Optional.of(new Post(title, postSlug, summary, timePublished, content));
+ return Optional.of(new Post(title, postSlug, summary, published, content, isPublished));
}
return Optional.empty();
}
@@ -88,7 +86,7 @@ public class BlogPostRepoSqlite implements BlogPostRepo {
@Override
public List<PostMetaData> searchPostsBody(String query) {
String sql = """
- SELECT title, slug, summary, published, last_edited
+ SELECT title, slug, summary, published, last_edited, is_published
FROM posts
WHERE content LIKE ?
ORDER BY published DESC
@@ -109,8 +107,9 @@ public class BlogPostRepoSqlite implements BlogPostRepo {
String summary = resultSet.getString("summary");
Instant published = Instant.parse(resultSet.getString("published"));
Instant lastEdit = Instant.parse(resultSet.getString("last_edited"));
+ boolean isPublished = resultSet.getBoolean("is_published");
- posts.add(new PostMetaData(title, slug, summary, published, lastEdit));
+ posts.add(new PostMetaData(title, slug, summary, published, lastEdit, isPublished));
}
}
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/SqliteManager.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/SqliteManager.java
index d83cfda..6fc5daf 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/SqliteManager.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/repository/SqliteManager.java
@@ -33,7 +33,8 @@ public class SqliteManager implements AutoCloseable {
content TEXT,
summary TEXT,
published TEXT NOT NULL,
- last_edited TEXT
+ last_edited TEXT,
+ is_published BOOLEAN
);
""";
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/BlogSearchService.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/BlogSearchService.java
index 26595f1..afc47f5 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/BlogSearchService.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/service/BlogSearchService.java
@@ -36,11 +36,6 @@ public class BlogSearchService {
bodyResults.forEach(post -> searchRanking.merge(post, bodyValue, Integer::sum));
- for (var item : searchRanking.entrySet()) {
- IO.println(item.getKey());
- IO.println(item.getValue());
- }
-
return searchRanking.entrySet().stream()
.sorted((e1, e2) -> Integer.compare(e2.getValue(), e1.getValue()))
.map(Map.Entry::getKey)