summaryrefslogtreecommitdiff
path: root/clams-server/src/main/java/no/eliashaugsbakk/clams
diff options
context:
space:
mode:
Diffstat (limited to 'clams-server/src/main/java/no/eliashaugsbakk/clams')
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppRoutes.java6
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticleController.java2
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticlesController.java36
-rw-r--r--clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/MediaController.java2
4 files changed, 26 insertions, 20 deletions
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppRoutes.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppRoutes.java
index 3df4d6d..9deef6b 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppRoutes.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppRoutes.java
@@ -26,7 +26,7 @@ public class AppRoutes implements EndpointGroup {
Map.of("page_title", "Projects - Elias Haugsbakk", "page_css", "projects")));
path("articles", () -> {
- get(appContext.getArticlesController()::handleArticlesRequest);
+ get(appContext.getArticlesController()::handleGetArticles);
get("{slug}", appContext.getArticlesController()::handleGetArticle);
});
@@ -50,13 +50,13 @@ public class AppRoutes implements EndpointGroup {
}
});
- post("articles", appContext.getArticleController()::handleArticleArticle);
+ post("articles", appContext.getArticleController()::handlePostArticle);
put("articles/{slug}", appContext.getArticleController()::handlePutArticle);
delete("articles/{slug}", appContext.getArticleController()::handleDeleteArticle);
get("media", appContext.getMediaController()::handleGetMediaIndex);
get("media/{uuid}", appContext.getMediaController()::handleGetMedia);
- post("media", appContext.getMediaController()::handleArticleMedia);
+ post("media", appContext.getMediaController()::handlePostMedia);
delete("media/{uuid}", appContext.getMediaController()::handleDeleteMedia);
});
}
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticleController.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticleController.java
index a57414f..8759b1a 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticleController.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticleController.java
@@ -15,7 +15,7 @@ public class ArticleController {
this.slugService = slugService;
}
- public void handleArticleArticle(Context ctx) {
+ public void handlePostArticle(Context ctx) {
ArticleDTO newArticle = ctx.bodyAsClass(ArticleDTO.class);
articlesRepo.addArticle(new Article(newArticle, slugService.toSlug(newArticle.title())));
}
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticlesController.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticlesController.java
index f013419..80a1cb5 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticlesController.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/ArticlesController.java
@@ -24,7 +24,7 @@ public class ArticlesController {
private final ArticlesRepo articlesRepo;
private final ArticlesSearchService articlesSearchService;
- public record SearchResultItem(String title, String slug, String summary, String formattedDate) {}
+ public record ArticleItem(String title, String slug, String summary, String formattedDate, int year) {}
public ArticlesController(SqliteManager sqliteManager) {
this.articlesRepo = new ArticlesRepoSqlite(sqliteManager);
@@ -58,7 +58,7 @@ public class ArticlesController {
));
}
- public void handleArticlesRequest(Context ctx) {
+ public void handleGetArticles(Context ctx) {
String searchTerm = ctx.queryParam("search");
if (searchTerm != null) {
handleSearch(ctx, searchTerm);
@@ -71,23 +71,28 @@ public class ArticlesController {
List<ArticleMetaData> allArticles = articlesRepo.listArticlesMetaData().stream()
.filter(ArticleMetaData::isPublished)
.toList();
- Map<Integer, List<ArticleMetaData>> articlesByYear = groupArticlesByYear(allArticles);
- var featuredSlugs = List.of(
- ""
- );
+ Map<Integer, List<ArticleMetaData>> articlesByYear = groupArticlesByYear(allArticles);
- List<Article> featuredArticles = new ArrayList<>();
- for (String slug : featuredSlugs) {
- articlesRepo.getArticle(slug).ifPresent(featuredArticles::add);
- }
+ Map<Integer, List<ArticleItem>> articleItemsByYear = articlesByYear.entrySet().stream()
+ .collect(Collectors.toMap(
+ Map.Entry::getKey,
+ entry -> entry.getValue().stream()
+ .map(article -> new ArticleItem(
+ article.title(),
+ article.slug(),
+ article.summary() != null ? article.summary() : "",
+ article.timePublished().atZone(OSLO_ZONE).format(DATE_FORMATTER),
+ article.timePublished().atZone(OSLO_ZONE).getYear()
+ ))
+ .toList()
+ ));
ctx.render("templates/articles.html",
Map.of(
"page_title", "My articles",
"page_css", "articles",
- "articles_by_year", articlesByYear,
- "featured_articles", featuredArticles,
+ "articles_by_year", articleItemsByYear,
"search_value", ""
));
}
@@ -96,13 +101,14 @@ public class ArticlesController {
String query = searchTerm.trim();
List<ArticleMetaData> results = query.isEmpty() ? List.of() : articlesSearchService.searchArticles(query);
- List<SearchResultItem> resultItems = results.stream()
+ List<ArticleItem> resultItems = results.stream()
.filter(ArticleMetaData::isPublished)
- .map(article -> new SearchResultItem(
+ .map(article -> new ArticleItem(
article.title(),
article.slug(),
article.summary() != null ? article.summary() : "",
- article.timePublished().atZone(OSLO_ZONE).format(DATE_FORMATTER)
+ article.timePublished().atZone(OSLO_ZONE).format(DATE_FORMATTER),
+ article.timePublished().atZone(OSLO_ZONE).getYear()
))
.toList();
diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/MediaController.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/MediaController.java
index d4e40b9..8855b7b 100644
--- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/MediaController.java
+++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/controller/MediaController.java
@@ -28,7 +28,7 @@ public class MediaController {
this.appConfig = appConfig;
}
- public void handleArticleMedia(Context ctx) {
+ public void handlePostMedia(Context ctx) {
UploadedFile file = ctx.uploadedFile("image");
if (file == null) {