Files
wehub-resource-sync 4cddfcf2f3
Backend Tests / Tests (other) (push) Failing after 1s
Backend Tests / Static Checks (push) Failing after 2s
Backend Tests / Tests (internal) (push) Failing after 2s
Backend Tests / Tests (server) (push) Failing after 1s
Backend Tests / Tests (store) (push) Failing after 1s
Build Canary Image / build-frontend (push) Failing after 1s
Frontend Tests / Lint (push) Failing after 1s
Build Canary Image / build-push (linux/amd64) (push) Has been skipped
Build Canary Image / build-push (linux/arm64) (push) Has been skipped
Build Canary Image / merge (push) Has been skipped
Frontend Tests / Build (push) Failing after 1s
Release Please / release-please (push) Failing after 0s
Proto Linter / Lint Protos (push) Failing after 2s
chore: import upstream snapshot with attribution
2026-07-13 12:02:24 +08:00

48 lines
1.4 KiB
Go

package store
import (
"context"
storepb "github.com/usememos/memos/proto/gen/store"
)
// DeleteUserFailpoint is a test-only hook for forcing a delete-user rollback.
type DeleteUserFailpoint string
const (
// DeleteUserFailpointBeforeCommit aborts after all delete statements run but before commit.
DeleteUserFailpointBeforeCommit DeleteUserFailpoint = "before_commit"
)
type deleteUserFailpointKey struct{}
// DeleteUserResult contains resources collected while deleting a user.
type DeleteUserResult struct {
Attachments []*Attachment
UserSettingKeys []storepb.UserSetting_Key
}
// WithDeleteUserFailpoint is a test-only helper that forces DeleteUser to roll back.
func WithDeleteUserFailpoint(ctx context.Context, failpoint DeleteUserFailpoint) context.Context {
return context.WithValue(ctx, deleteUserFailpointKey{}, failpoint)
}
// GetDeleteUserFailpoint returns the delete-user failpoint attached to ctx, if any.
func GetDeleteUserFailpoint(ctx context.Context) DeleteUserFailpoint {
failpoint, ok := ctx.Value(deleteUserFailpointKey{}).(DeleteUserFailpoint)
if !ok {
return ""
}
return failpoint
}
func (s *Store) deleteUserCache(ctx context.Context, userID int32, result *DeleteUserResult) {
s.userCache.Delete(ctx, userCacheKey(userID))
if result == nil {
return
}
for _, key := range result.UserSettingKeys {
s.userSettingCache.Delete(ctx, getUserSettingCacheKey(userID, key.String()))
}
}