lablup / lablup/backend.ai

Implement User Adapter methods and resolve v2 GQL mutation NotImplementedErrors

Open
#10,402 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.