10 changed files with 201 additions and 32 deletions
@ -1,6 +1,12 @@
@@ -1,6 +1,12 @@
|
||||
/* © SRSoftware 2025 */ |
||||
package de.srsoftware.umbrella.bookmarks; |
||||
|
||||
import de.srsoftware.umbrella.core.model.Bookmark; |
||||
import de.srsoftware.umbrella.core.model.Hash; |
||||
import java.util.Map; |
||||
|
||||
public interface BookmarkDb { |
||||
String save(String url, String comment, long userId); |
||||
Bookmark save(String url, String comment, long userId); |
||||
|
||||
Map<Hash, Bookmark> list(long id); |
||||
} |
||||
|
||||
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
/* © SRSoftware 2025 */ |
||||
package de.srsoftware.umbrella.core.model; |
||||
|
||||
import static de.srsoftware.umbrella.core.Constants.*; |
||||
import static de.srsoftware.umbrella.core.Util.SHA1; |
||||
import static de.srsoftware.umbrella.core.Util.sha1; |
||||
import static java.time.ZoneOffset.UTC; |
||||
|
||||
import de.srsoftware.tools.Mappable; |
||||
import java.sql.ResultSet; |
||||
import java.sql.SQLException; |
||||
import java.time.LocalDateTime; |
||||
import java.util.ArrayList; |
||||
import java.util.Collection; |
||||
import java.util.Map; |
||||
|
||||
public record Bookmark(String url, Hash hash, String comment, LocalDateTime timestamp, Collection<String> tags) implements Mappable { |
||||
|
||||
public static Bookmark of(ResultSet rs) throws SQLException { |
||||
return new Bookmark(rs.getString(URL),new Hash(rs.getString(HASH),SHA1),rs.getString(COMMENT),LocalDateTime.ofEpochSecond(rs.getLong(TIMESTAMP),0, UTC),new ArrayList<>()); |
||||
} |
||||
|
||||
public static Bookmark of(String url, String comment, LocalDateTime timestamp){ |
||||
return new Bookmark(url,sha1(url),comment,timestamp,new ArrayList<>()); |
||||
} |
||||
|
||||
@Override |
||||
public Map<String, Object> toMap() { |
||||
return Map.of( |
||||
URL, url, |
||||
COMMENT, comment, |
||||
HASH, Map.of(VALUE,hash.value(),TYPE,hash.type()), |
||||
TAGS, tags, |
||||
TIMESTAMP, timestamp.withNano(0) |
||||
); |
||||
} |
||||
} |
||||
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
/* © SRSoftware 2025 */ |
||||
package de.srsoftware.umbrella.core.model; |
||||
|
||||
import java.util.Objects; |
||||
|
||||
public record Hash(String value, String type){ |
||||
@Override |
||||
public boolean equals(Object o) { |
||||
if (!(o instanceof Hash(String v, String t))) return false; |
||||
return Objects.equals(type, t) && Objects.equals(value, v); |
||||
} |
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
return Objects.hash(value, type); |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
return value; |
||||
} |
||||
} |
||||
Loading…
Reference in new issue