From: AsamK Date: Sun, 12 Nov 2023 13:19:10 +0000 (+0100) Subject: Refactor KeyValueStore X-Git-Tag: v0.13.0~85 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/fbcc1cfb50b38b78f5e3fb986defaaa72f96f840?ds=sidebyside Refactor KeyValueStore --- diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/keyValue/KeyValueStore.java b/lib/src/main/java/org/asamk/signal/manager/storage/keyValue/KeyValueStore.java index 95980d4d..9addcc7d 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/keyValue/KeyValueStore.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/keyValue/KeyValueStore.java @@ -36,6 +36,22 @@ public class KeyValueStore { } public T getEntry(KeyValueEntry 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 void storeEntry(KeyValueEntry 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 getEntry(final Connection connection, final KeyValueEntry key) throws SQLException { final var sql = ( """ SELECT key, value @@ -43,24 +59,22 @@ public class KeyValueStore { 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 void storeEntry(KeyValueEntry key, T value) { + private void storeEntry( + final Connection connection, final KeyValueEntry key, final T value + ) throws SQLException { 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); - 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(); } }