diff --git a/src/main/java/dev/openfga/sdk/api/client/ClientTupleKey.java b/src/main/java/dev/openfga/sdk/api/client/ClientTupleKey.java index 7993519..e61711d 100644 --- a/src/main/java/dev/openfga/sdk/api/client/ClientTupleKey.java +++ b/src/main/java/dev/openfga/sdk/api/client/ClientTupleKey.java @@ -16,6 +16,7 @@ import dev.openfga.sdk.api.model.TupleKey; import dev.openfga.sdk.api.model.TupleKeys; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public class ClientTupleKey { @@ -66,12 +67,12 @@ public TupleKey asTupleKey() { return new TupleKey().user(user).relation(relation)._object(_object); } - public static TupleKeys asTupleKeys(List clientTupleKeys) { + public static Optional asTupleKeys(List clientTupleKeys) { if (clientTupleKeys == null || clientTupleKeys.size() == 0) { - return new TupleKeys(); + return Optional.empty(); } - return new TupleKeys().tupleKeys(asListOfTupleKey(clientTupleKeys)); + return Optional.of(new TupleKeys().tupleKeys(asListOfTupleKey(clientTupleKeys))); } public static ContextualTupleKeys asContextualTupleKeys(List clientTupleKeys) { diff --git a/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java b/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java index 1c1ce95..4818c35 100644 --- a/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java +++ b/src/main/java/dev/openfga/sdk/api/client/OpenFgaClient.java @@ -288,17 +288,8 @@ private CompletableFuture writeOneTransaction( String storeId, ClientWriteRequest request, ClientWriteOptions options) { WriteRequest body = new WriteRequest(); - if (request != null) { - TupleKeys writes = ClientTupleKey.asTupleKeys(request.getWrites()); - if (!writes.getTupleKeys().isEmpty()) { - body.writes(writes); - } - - TupleKeys deletes = ClientTupleKey.asTupleKeys(request.getDeletes()); - if (!deletes.getTupleKeys().isEmpty()) { - body.deletes(deletes); - } - } + ClientTupleKey.asTupleKeys(request.getWrites()).ifPresent(body::writes); + ClientTupleKey.asTupleKeys(request.getDeletes()).ifPresent(body::deletes); if (options != null && !isNullOrWhitespace(options.getAuthorizationModelId())) { body.authorizationModelId(options.getAuthorizationModelId()); @@ -358,7 +349,9 @@ public CompletableFuture writeTuples(List t configuration.assertValid(); String storeId = configuration.getStoreIdChecked(); - var request = new WriteRequest().writes(ClientTupleKey.asTupleKeys(tupleKeys)); + var request = new WriteRequest(); + ClientTupleKey.asTupleKeys(tupleKeys).ifPresent(request::writes); + String authorizationModelId = configuration.getAuthorizationModelId(); if (!isNullOrWhitespace(authorizationModelId)) { request.authorizationModelId(authorizationModelId); @@ -377,7 +370,9 @@ public CompletableFuture deleteTuples(List configuration.assertValid(); String storeId = configuration.getStoreIdChecked(); - var request = new WriteRequest().deletes(ClientTupleKey.asTupleKeys(tupleKeys)); + var request = new WriteRequest(); + ClientTupleKey.asTupleKeys(tupleKeys).ifPresent(request::deletes); + String authorizationModelId = configuration.getAuthorizationModelId(); if (!isNullOrWhitespace(authorizationModelId)) { request.authorizationModelId(authorizationModelId);