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
48 lines
1.4 KiB
Go
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()))
|
|
}
|
|
}
|