MCPcopy Create free account
hub / github.com/bytebase/bytebase / RemoveMemberFromAllGroups

Method RemoveMemberFromAllGroups

backend/store/group.go:337–358  ·  view source on GitHub ↗

RemoveMemberFromAllGroups removes a user from all groups in a workspace via a single SQL update. member format is "users/{email}".

(ctx context.Context, workspaceID string, member string)

Source from the content-addressed store, hash-verified

335// RemoveMemberFromAllGroups removes a user from all groups in a workspace via a single SQL update.
336// member format is "users/{email}".
337func (s *Store) RemoveMemberFromAllGroups(ctx context.Context, workspaceID string, member string) error {
338 query := `
339 UPDATE user_group
340 SET payload = jsonb_set(
341 payload,
342 '{members}',
343 COALESCE(
344 (SELECT jsonb_agg(m) FROM jsonb_array_elements(payload->'members') m WHERE m->>'member' != $1),
345 '[]'::jsonb
346 )
347 )
348 WHERE workspace = $2
349 AND EXISTS (SELECT 1 FROM jsonb_array_elements(payload->'members') m WHERE m->>'member' = $1)`
350 if _, err := s.GetDB().ExecContext(ctx, query, member, workspaceID); err != nil {
351 return errors.Wrapf(err, "failed to remove member %q from groups in workspace %q", member, workspaceID)
352 }
353 // Purge caches since we can't know which groups were affected.
354 s.groupCache.Purge()
355 s.groupMembersCache.Purge()
356 s.memberGroupsCache.Purge()
357 return nil
358}
359
360// GetUserGroupsSnapshot returns groups for a user with snapshot reads (with cache).
361// userName format is "users/{email}".

Callers 1

LeaveWorkspaceMethod · 0.80

Calls 1

GetDBMethod · 0.95

Tested by

no test coverage detected