-
Notifications
You must be signed in to change notification settings - Fork 164
feat(BA-4147): Implement querier pattern for RBAC permission/scope fetchers #8432
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements a BatchQuerier-based search pattern for RBAC permission and scope fetchers, providing SQL-level querying capabilities to replace in-memory filtering. The changes introduce new search infrastructure across data types, repository options, database sources, repositories, service actions, and services.
Changes:
- Added three new list result data types (PermissionGroupListResult, ScopedPermissionListResult, ObjectPermissionListResult) to support paginated search results
- Implemented conditions and orders classes for querying permission groups, scoped permissions, and object permissions with cursor-based pagination support
- Created search methods in the database source, repository, and service layers for all three entity types with proper pagination and filtering capabilities
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/ai/backend/manager/data/permission/permission_group.py | Added PermissionGroupListResult data type for paginated search results |
| src/ai/backend/manager/data/permission/permission.py | Added ScopedPermissionListResult data type for paginated search results |
| src/ai/backend/manager/data/permission/object_permission.py | Added ObjectPermissionListResult data type for paginated search results |
| src/ai/backend/manager/repositories/permission_controller/options.py | Implemented query conditions and orders for permission groups, scoped permissions, and object permissions with cursor-based pagination support |
| src/ai/backend/manager/repositories/permission_controller/db_source/db_source.py | Added database-level search methods for permission groups, scoped permissions, and object permissions using execute_batch_querier |
| src/ai/backend/manager/repositories/permission_controller/repository.py | Added repository-level wrapper methods with resilience decorators for all three search operations |
| src/ai/backend/manager/services/permission_contoller/actions/search_permission_groups.py | Created SearchPermissionGroupsAction and SearchPermissionGroupsActionResult classes |
| src/ai/backend/manager/services/permission_contoller/actions/search_scoped_permissions.py | Created SearchScopedPermissionsAction and SearchScopedPermissionsActionResult classes |
| src/ai/backend/manager/services/permission_contoller/actions/search_object_permissions.py | Created SearchObjectPermissionsAction and SearchObjectPermissionsActionResult classes |
| src/ai/backend/manager/services/permission_contoller/actions/init.py | Exported the new search action classes for external use |
| src/ai/backend/manager/services/permission_contoller/service.py | Implemented service-level methods that orchestrate the search operations by calling repository methods and transforming results |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
f1d2ab1 to
2e5ca4e
Compare
| @classmethod | ||
| def operation_type(cls) -> str: | ||
| return "search" | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Like SearchScopedPermissionsAction, this is also a RoleAction, so shouldn’t we specify the operation_type more concretely as search_object_permission?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We decided to declare operation type as enum
…tchers Add BatchQuerier-based search methods for permission groups, scoped permissions, and object permissions across all layers (options, data types, DB source, repository, service actions).
… new Conditions/Orders classes
Add tests for search_roles, search_permission_groups, search_scoped_permissions, and search_object_permissions covering filtering and ordering capabilities.
2e5ca4e to
7d38e5a
Compare
resolves #8429 (BA-4147)
Summary
Checklist: (if applicable)
ai.backend.testdocsdirectory