feat: efficient roles & orgs lookup for a user [SC-35706] #87
+142
−1
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.
We want to display the organizations a user has access to in the cli, along with their roles for each org. This is roughly the structure of what we have without this change:
Note that this is an N+1 operation, because each
role.organizationcall in the loop does another http call to retrieve the organization. That happens even if the same organization has already been seen.We add
user.roles_with_organizations, which enables the same looping operations and only make 2 http requests. First it gets all the organizations and keeps them in a map, then it does the call to roles and preloads each role with the organization from the preloaded map. The above code can be converted to:This will help with: aptible/aptible-cli#403