]> nmode's Git Repositories - signal-cli/commitdiff
Refactor KeyValueStore
authorAsamK <asamk@gmx.de>
Sun, 12 Nov 2023 13:19:10 +0000 (14:19 +0100)
committerAsamK <asamk@gmx.de>
Sun, 12 Nov 2023 13:24:26 +0000 (14:24 +0100)
lib/src/main/java/org/asamk/signal/manager/storage/keyValue/KeyValueStore.java

index 95980d4d4659fe64d4a3593d1eacdb91ad244576..9addcc7d9628f797e4c3927b1747e34284d743ac 100644 (file)
@@ -36,6 +36,22 @@ public class KeyValueStore {
     }
 
     public <T> T getEntry(KeyValueEntry<T> key) {
     }
 
     public <T> T getEntry(KeyValueEntry<T> key) {
+        try (final var connection = database.getConnection()) {
+            return getEntry(connection, key);
+        } catch (SQLException e) {
+            throw new RuntimeException("Failed read from pre_key store", e);
+        }
+    }
+
+    public <T> void storeEntry(KeyValueEntry<T> key, T value) {
+        try (final var connection = database.getConnection()) {
+            storeEntry(connection, key, value);
+        } catch (SQLException e) {
+            throw new RuntimeException("Failed update key_value store", e);
+        }
+    }
+
+    private <T> T getEntry(final Connection connection, final KeyValueEntry<T> key) throws SQLException {
         final var sql = (
                 """
                 SELECT key, value
         final var sql = (
                 """
                 SELECT key, value
@@ -43,24 +59,22 @@ public class KeyValueStore {
                 WHERE p.key = ?
                 """
         ).formatted(TABLE_KEY_VALUE);
                 WHERE p.key = ?
                 """
         ).formatted(TABLE_KEY_VALUE);
-        try (final var connection = database.getConnection()) {
-            try (final var statement = connection.prepareStatement(sql)) {
-                statement.setString(1, key.key());
+        try (final var statement = connection.prepareStatement(sql)) {
+            statement.setString(1, key.key());
 
 
-                final var result = Utils.executeQueryForOptional(statement,
-                        resultSet -> readValueFromResultSet(key, resultSet)).orElse(null);
+            final var result = Utils.executeQueryForOptional(statement,
+                    resultSet -> readValueFromResultSet(key, resultSet)).orElse(null);
 
 
-                if (result == null) {
-                    return key.defaultValue();
-                }
-                return result;
+            if (result == null) {
+                return key.defaultValue();
             }
             }
-        } catch (SQLException e) {
-            throw new RuntimeException("Failed read from pre_key store", e);
+            return result;
         }
     }
 
         }
     }
 
-    public <T> void storeEntry(KeyValueEntry<T> key, T value) {
+    private <T> void storeEntry(
+            final Connection connection, final KeyValueEntry<T> key, final T value
+    ) throws SQLException {
         final var sql = (
                 """
                 INSERT INTO %s (key, value)
         final var sql = (
                 """
                 INSERT INTO %s (key, value)
@@ -68,14 +82,10 @@ public class KeyValueStore {
                 ON CONFLICT (key) DO UPDATE SET value=excluded.value
                 """
         ).formatted(TABLE_KEY_VALUE);
                 ON CONFLICT (key) DO UPDATE SET value=excluded.value
                 """
         ).formatted(TABLE_KEY_VALUE);
-        try (final var connection = database.getConnection()) {
-            try (final var statement = connection.prepareStatement(sql)) {
-                statement.setString(1, key.key());
-                setParameterValue(statement, 2, key.clazz(), value);
-                statement.executeUpdate();
-            }
-        } catch (SQLException e) {
-            throw new RuntimeException("Failed update key_value store", e);
+        try (final var statement = connection.prepareStatement(sql)) {
+            statement.setString(1, key.key());
+            setParameterValue(statement, 2, key.clazz(), value);
+            statement.executeUpdate();
         }
     }
 
         }
     }