Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions src/main/java/it/robfrank/linklift/Application.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,7 @@

import com.arcadedb.remote.RemoteDatabase;
import io.javalin.Javalin;
import it.robfrank.linklift.adapter.in.web.AuthenticationController;
import it.robfrank.linklift.adapter.in.web.CollectionController;
import it.robfrank.linklift.adapter.in.web.GetContentController;
import it.robfrank.linklift.adapter.in.web.GetRelatedLinksController;
import it.robfrank.linklift.adapter.in.web.ListLinksController;
import it.robfrank.linklift.adapter.in.web.NewLinkController;
import it.robfrank.linklift.adapter.in.web.*;
import it.robfrank.linklift.adapter.out.content.SimpleTextSummarizer;
import it.robfrank.linklift.adapter.out.event.SimpleEventPublisher;
import it.robfrank.linklift.adapter.out.http.HttpContentDownloader;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package it.robfrank.linklift.adapter.out.persistence;

import com.arcadedb.database.Document;
import com.arcadedb.exception.ArcadeDBException;
import com.arcadedb.query.sql.executor.Result;
import com.arcadedb.remote.RemoteDatabase;
import it.robfrank.linklift.application.domain.exception.DatabaseException;
import it.robfrank.linklift.application.domain.model.Collection;
import it.robfrank.linklift.application.domain.model.Link;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Optional;
import org.slf4j.Logger;
Expand All @@ -25,7 +23,7 @@ public ArcadeCollectionRepository(RemoteDatabase database) {
this.linkMapper = new LinkMapper();
}

private Collection toCollection(com.arcadedb.database.Document vertex) {
private Collection toCollection(Document vertex) {
return new Collection(
vertex.getString("id"),
vertex.getString("name"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import it.robfrank.linklift.application.domain.model.Link;
import it.robfrank.linklift.application.domain.model.LinkPage;
import it.robfrank.linklift.application.port.in.ListLinksQuery;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
Expand Down Expand Up @@ -106,7 +107,7 @@ public Link saveLinkForUser(Link link, String userId) {

// Extract domain and create BELONGS_TO_DOMAIN edge
try {
String domainName = new java.net.URI(link.url()).getHost();
String domainName = new URI(link.url()).getHost();
if (domainName != null) {
if (domainName.startsWith("www.")) {
domainName = domainName.substring(4);
Expand All @@ -125,7 +126,7 @@ public Link saveLinkForUser(Link link, String userId) {
}
} catch (URISyntaxException e) {
// Log domain extraction errors instead of printing to stderr
logger.warn("Failed to extract domain from URL: {}", link.url(), e);
logger.error("Failed to extract domain from URL: {}", link.url(), e);
}
});
return link;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import it.robfrank.linklift.application.port.in.ListLinksQuery;
import it.robfrank.linklift.application.port.out.LoadLinksPort;
import it.robfrank.linklift.application.port.out.SaveLinkPort;
import java.util.List;
import java.util.Optional;

public class LinkPersistenceAdapter implements SaveLinkPort, LoadLinksPort {
Expand Down Expand Up @@ -86,7 +87,7 @@ public void transferLinkOwnership(String linkId, String fromUserId, String toUse
}

@Override
public java.util.List<Link> getRelatedLinks(String linkId, String userId) {
public List<Link> getRelatedLinks(String linkId, String userId) {
return linkRepository.getRelatedLinks(linkId, userId);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package it.robfrank.linklift.application.port.out;

import it.robfrank.linklift.application.domain.model.Link;
import it.robfrank.linklift.application.domain.model.LinkPage;
import it.robfrank.linklift.application.port.in.ListLinksQuery;
import java.util.List;

public interface LoadLinksPort {
LinkPage loadLinks(ListLinksQuery query);

java.util.List<it.robfrank.linklift.application.domain.model.Link> getRelatedLinks(String linkId, String userId);
List<Link> getRelatedLinks(String linkId, String userId);
}
9 changes: 3 additions & 6 deletions src/main/java/it/robfrank/linklift/config/WebBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
import static io.javalin.apibuilder.ApiBuilder.get;

import io.javalin.Javalin;
import it.robfrank.linklift.adapter.in.web.AuthenticationController;
import it.robfrank.linklift.adapter.in.web.GetContentController;
import it.robfrank.linklift.adapter.in.web.ListLinksController;
import it.robfrank.linklift.adapter.in.web.NewLinkController;
import it.robfrank.linklift.adapter.in.web.*;
import it.robfrank.linklift.adapter.in.web.error.GlobalExceptionHandler;
import it.robfrank.linklift.adapter.in.web.security.JwtAuthenticationHandler;
import it.robfrank.linklift.adapter.in.web.security.RequireAuthentication;
Expand Down Expand Up @@ -79,7 +76,7 @@ public WebBuilder withGetContentController(GetContentController getContentContro
return this;
}

public WebBuilder withCollectionController(it.robfrank.linklift.adapter.in.web.CollectionController collectionController) {
public WebBuilder withCollectionController(CollectionController collectionController) {
// Shared authentication for all /api/v1/collections endpoints
app.before("/api/v1/collections", requireAuthentication);
app.before("/api/v1/collections/{id}", requireAuthentication);
Expand Down Expand Up @@ -111,7 +108,7 @@ public WebBuilder withCollectionController(it.robfrank.linklift.adapter.in.web.C
return this;
}

public WebBuilder withGetRelatedLinksController(it.robfrank.linklift.adapter.in.web.GetRelatedLinksController getRelatedLinksController) {
public WebBuilder withGetRelatedLinksController(GetRelatedLinksController getRelatedLinksController) {
app.before("/api/v1/links/{linkId}/related", requireAuthentication);
app.before("/api/v1/links/{linkId}/related", RequirePermission.any(authorizationService, Role.Permissions.READ_OWN_LINKS));
app.get("/api/v1/links/{linkId}/related", getRelatedLinksController::getRelatedLinks);
Expand Down