Implement User Adapter methods and resolve v2 GQL mutation NotImplementedErrors
- Dominant language
- Python
- Stars
- 670
- Forks
- 183
- Avg merge
- 15h 13m
- Merged PRs (30d)
- 368
Description
## Background
Depends on BA-5356. Once UUID-based Service methods are available, this story wires them through the Adapter layer and resolves 6 NotImplementedError stubs in the Strawberry v2 GQL mutation resolver.
## Scope
### Adapter layer
- `api/adapters/user.py`: implement `create_user()`, `modify_user_by_id()`, `delete_user_by_id()`, `purge_user_by_id()`
- `create_user`: PasswordInfo hashing from auth_config + CreateUserAction (same pattern as bulk)
- `modify_user_by_id`: UUID + UserUpdaterSpec → ModifyUserByIdAction
- `delete_user_by_id`: UUID → DeleteUserByIdAction
- `purge_user_by_id`: UUID + options → PurgeUserAction (using existing purge_user_by_uuid in repo)
### GraphQL Resolver layer
- `api/gql/user/resolver/mutation.py`: resolve 6 NotImplementedError mutations:
- `admin_create_user_v2`: GQL input → PasswordInfo + CreateUserAction → adapter
- `admin_update_user_v2`: user_id (UUID) + input → adapter.modify_user_by_id()
- `update_user_v2`: current_user() UUID + input → adapter.modify_user_by_id()
- `admin_delete_user_v2`: user_id → adapter.delete_user_by_id()
- `admin_delete_users_v2`: list of user_ids → adapter.delete_user_by_id() each
- `admin_purge_user_v2`: input → adapter.purge_user_by_id()
## Success Criteria
- [ ] admin_create_user_v2: valid input → CreateUserPayloadGQL returned, no NotImplementedError
- [ ] admin_update_user_v2: existing UUID + valid input → UpdateUserPayloadGQL
- [ ] admin_update_user_v2: non-existent UUID → GQL error (not 500)
- [ ] update_user_v2: updates current authenticated user
- [ ] admin_delete_user_v2: soft deletes user by UUID
- [ ] admin_delete_users_v2: soft deletes multiple users by UUID list
- [ ] admin_purge_user_v2: purges user and associated data by UUID
- [ ] All 6 mutations no longer raise NotImplementedError
- [ ] pants test src/ai/backend/manager:unit passes
JIRA Issue: BA-5357
Contributor guide
Assessment
This issue has not been assessed yet.