0.29.1原版
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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()))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user