Repository navigation
Conversation
Add a storeId option to the options of every OpenFgaClient method that works on a store. When it is set, the request goes to that store instead of the one in the client configuration, so one client and its connection pool can serve several stores. clientBatchCheck and listRelations pass it on to their checks. Fixes openfga#150 Signed-off-by: Srinivas Chippagiri <cvas22@gmail.com>
Contributor
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 41 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds a per-request store ID override to the Java SDK (#150), as the Go, .NET and JS SDKs have. With it, a multi-tenant application can use one
OpenFgaClient, and so one connection pool, for all its stores instead of creating a client per store or callingsetStoreIdbefore each request.Changes, following the pattern from @jimmyjames's example commit in the issue (ef91a07):
storeIdoption (fluent setter and getter) on the options of every client method that works on a store: get/delete store, the authorization model methods, read changes, read, write, write/delete tuples, check, client batch check, batch check, expand, list objects, streamed list objects, list relations, list users, and the assertion methods.OpenFgaClientresolves the store with a privategetStoreIdChecked(String)helper: the option when it's set, otherwise the configured store ID. A missing store ID still fails with the sameFgaInvalidParameterException.batchChecknow uses the resolved store ID instead of readingconfiguration.getStoreId()inside the request lambda.clientBatchCheckandlistRelationspass the store ID on to their individual checks, throughasClientCheckOptions()andasClientBatchCheckClientOptions().Nothing changes for callers that don't set the option.
Fixes #150
Testing
New
OpenFgaClientStoreIdOverrideTest(WireMock):check,write,read,listObjects,batchCheckandstreamedListObjectsgo to the store from the optionslistRelationssends all its checks to the store from the optionsI haven't run the Gradle build locally, so I'm relying on CI for compilation and the test run.
Notes
@joarobles offered to take this in February 2025. Since there's been no PR since then, I went ahead; happy to coordinate if you're still working on it.