default CompletableFuture<V> delete(K key) { return delete(key, Options.deleteAndGet()) .thenApply(result -> { try { List<KeyValue<K, V>> prevKvs = result.prevKvs(); if (prevKvs.isEmpty()) { return null; } else { return retain(prevKvs.get(0).value()); } } finally { result.close(); } }); }
default CompletableFuture<V> delete(K pKey, K lKey) { return delete(pKey, lKey, Options.deleteAndGet()) .thenApply(result -> { try { List<KeyValue<K, V>> prevKvs = result.prevKvs(); if (prevKvs.isEmpty()) { return null; } else { return retain(prevKvs.get(0).value()); } } finally { result.close(); } }); }
@Override default CompletableFuture<V> delete(K k) { DeleteOp<K, V> op = getOpFactory().newDelete( k, Options.deleteAndGet()); return delete(op).thenCompose(result -> { try { if (Code.OK == result.code()) { List<KeyValue<K, V>> prevKvs = result.prevKvs(); if (prevKvs.isEmpty()) { return FutureUtils.value(null); } else { return FutureUtils.value(prevKvs.get(0).value()); } } else { return failWithCode(result.code(), "Fail to delete key " + k + " from store " + name()); } } finally { result.close(); } }); }
default CompletableFuture<KeyValue<K, V>> rDelete(K pKey, K lKey, long expectedRevision) { Txn<K, V> txn = txn(pKey); txn .If( opFactory().compareModRevision(CompareResult.EQUAL, lKey, expectedRevision)) .Then( opFactory().newDelete( lKey, Options.deleteAndGet())); return txn.commit() .thenCompose(result -> { try { if (result.isSuccess()) { DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) result.results().get(0); if (deleteResult.prevKvs().isEmpty()) { return FutureUtils.value(null); } else { List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); return FutureUtils.value(prevKvs.get(0)); } } else { return FutureUtils.exception( new KvApiException(Code.BAD_REVISION, "Failed to rDelete key " + lKey + " (mod_rev = " + expectedRevision + ")")); } } finally { result.close(); } }); }
default CompletableFuture<KeyValue<K, V>> rDelete(K key, long expectedRevision) { Txn<K, V> txn = txn(key); txn .If( opFactory().compareModRevision(CompareResult.EQUAL, key, expectedRevision)) .Then( opFactory().newDelete( key, Options.deleteAndGet())); return txn.commit() .thenCompose(result -> { try { if (result.isSuccess()) { DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) result.results().get(0); if (deleteResult.prevKvs().isEmpty()) { return FutureUtils.value(null); } else { List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); return FutureUtils.value(prevKvs.get(0)); } } else { return FutureUtils.exception( new KvApiException(Code.BAD_REVISION, "Failed to rDelete key " + key + " (mod_rev = " + expectedRevision + ")")); } } finally { result.close(); } }); }
default CompletableFuture<KeyValue<K, V>> vDelete(K key, long expectedVersion) { Txn<K, V> txn = txn(key); txn .If( opFactory().compareVersion(CompareResult.EQUAL, key, expectedVersion)) .Then( opFactory().newDelete( key, Options.deleteAndGet())); return txn.commit() .thenCompose(result -> { try { if (result.isSuccess()) { DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) result.results().get(0); if (deleteResult.prevKvs().isEmpty()) { return FutureUtils.value(null); } else { List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); return FutureUtils.value(prevKvs.get(0)); } } else { return FutureUtils.exception( new KvApiException(Code.BAD_REVISION, "Failed to vDelete key " + key + " (version = " + expectedVersion + ")")); } } finally { result.close(); } }); }
default CompletableFuture<KeyValue<K, V>> vDelete(K pKey, K lKey, long expectedVersion) { Txn<K, V> txn = txn(pKey); txn .If( opFactory().compareVersion(CompareResult.EQUAL, lKey, expectedVersion)) .Then( opFactory().newDelete( lKey, Options.deleteAndGet())); return txn.commit() .thenCompose(result -> { try { if (result.isSuccess()) { DeleteResult<K, V> deleteResult = (DeleteResult<K, V>) result.results().get(0); if (deleteResult.prevKvs().isEmpty()) { return FutureUtils.value(null); } else { List<KeyValue<K, V>> prevKvs = deleteResult.getPrevKvsAndClear(); return FutureUtils.value(prevKvs.get(0)); } } else { return FutureUtils.exception( new KvApiException(Code.BAD_REVISION, "Failed to vDelete key " + lKey + " (version = " + expectedVersion + ")")); } } finally { result.close(); } }); }