perf: reduce events read from eventstore (#6280)

* fix: events query user

* fix: events query user

* user events query

* fix tests

* fix query

* cleanup

---------

Co-authored-by: Fabienne <fabienne.gerschwiler@gmail.com>
This commit is contained in:
Livio Spring
2023-07-27 14:10:19 +02:00
committed by GitHub
parent b0dc02509b
commit d3e403f645
13 changed files with 164 additions and 22 deletions

View File

@@ -155,3 +155,14 @@ func (t *RefreshTokenView) appendRenewedEvent(event *es_models.Event) error {
func (t *RefreshTokenView) appendRemovedEvent(event *es_models.Event) {
t.Expiration = event.CreationDate
}
func (t *RefreshTokenView) GetRelevantEventTypes() []es_models.EventType {
return []es_models.EventType{
es_models.EventType(user_repo.HumanRefreshTokenAddedType),
es_models.EventType(user_repo.HumanRefreshTokenRenewedType),
es_models.EventType(user_repo.HumanRefreshTokenRemovedType),
es_models.EventType(user_repo.UserRemovedType),
es_models.EventType(user_repo.UserDeactivatedType),
es_models.EventType(user_repo.UserLockedType),
}
}

View File

@@ -182,6 +182,23 @@ func (t *TokenView) appendPATRemoved(event *es_models.Event) error {
return nil
}
func (t *TokenView) GetRelevantEventTypes() []es_models.EventType {
return []es_models.EventType{
es_models.EventType(user_repo.UserTokenAddedType),
es_models.EventType(user_repo.PersonalAccessTokenAddedType),
es_models.EventType(user_repo.UserTokenRemovedType),
es_models.EventType(user_repo.HumanRefreshTokenRemovedType),
es_models.EventType(user_repo.UserV1SignedOutType),
es_models.EventType(user_repo.HumanSignedOutType),
es_models.EventType(user_repo.UserRemovedType),
es_models.EventType(user_repo.UserDeactivatedType),
es_models.EventType(user_repo.UserLockedType),
es_models.EventType(user_repo.UserLockedType),
es_models.EventType(user_repo.UserReactivatedType),
es_models.EventType(user_repo.PersonalAccessTokenRemovedType),
}
}
func eventToMap(event *es_models.Event) (map[string]interface{}, error) {
m := make(map[string]interface{})
if err := json.Unmarshal(event.Data, &m); err != nil {

View File

@@ -534,3 +534,59 @@ func (u *UserView) SetEmptyUserType() {
u.HumanView = nil
}
}
func (u *UserView) EventTypes() []models.EventType {
return []models.EventType{
models.EventType(user.MachineAddedEventType),
models.EventType(user.UserV1AddedType),
models.EventType(user.UserV1RegisteredType),
models.EventType(user.HumanRegisteredType),
models.EventType(user.HumanAddedType),
models.EventType(user.UserRemovedType),
models.EventType(user.UserV1PasswordChangedType),
models.EventType(user.HumanPasswordChangedType),
models.EventType(user.HumanPasswordlessTokenAddedType),
models.EventType(user.HumanPasswordlessTokenVerifiedType),
models.EventType(user.HumanPasswordlessTokenRemovedType),
models.EventType(user.UserV1ProfileChangedType),
models.EventType(user.HumanProfileChangedType),
models.EventType(user.UserV1AddressChangedType),
models.EventType(user.HumanAddressChangedType),
models.EventType(user.MachineChangedEventType),
models.EventType(user.UserDomainClaimedType),
models.EventType(user.UserUserNameChangedType),
models.EventType(user.UserV1EmailChangedType),
models.EventType(user.HumanEmailChangedType),
models.EventType(user.UserV1EmailVerifiedType),
models.EventType(user.HumanEmailVerifiedType),
models.EventType(user.UserV1PhoneChangedType),
models.EventType(user.HumanPhoneChangedType),
models.EventType(user.UserV1PhoneVerifiedType),
models.EventType(user.HumanPhoneVerifiedType),
models.EventType(user.UserV1PhoneRemovedType),
models.EventType(user.HumanPhoneRemovedType),
models.EventType(user.UserDeactivatedType),
models.EventType(user.UserReactivatedType),
models.EventType(user.UserUnlockedType),
models.EventType(user.UserLockedType),
models.EventType(user.UserV1MFAOTPAddedType),
models.EventType(user.HumanMFAOTPAddedType),
models.EventType(user.UserV1MFAOTPVerifiedType),
models.EventType(user.HumanMFAOTPVerifiedType),
models.EventType(user.UserV1MFAOTPRemovedType),
models.EventType(user.HumanMFAOTPRemovedType),
models.EventType(user.HumanU2FTokenAddedType),
models.EventType(user.HumanU2FTokenVerifiedType),
models.EventType(user.HumanU2FTokenRemovedType),
models.EventType(user.UserV1MFAInitSkippedType),
models.EventType(user.HumanMFAInitSkippedType),
models.EventType(user.UserV1InitialCodeAddedType),
models.EventType(user.HumanInitialCodeAddedType),
models.EventType(user.UserV1InitializedCheckSucceededType),
models.EventType(user.HumanInitializedCheckSucceededType),
models.EventType(user.HumanAvatarAddedType),
models.EventType(user.HumanAvatarRemovedType),
models.EventType(user.HumanPasswordlessInitCodeAddedType),
models.EventType(user.HumanPasswordlessInitCodeRequestedType),
}
}

View File

@@ -198,3 +198,37 @@ func avatarKeyFromEvent(event *models.Event) (string, error) {
}
return data["storeKey"], nil
}
func (v *UserSessionView) EventTypes() []models.EventType {
return []models.EventType{
models.EventType(user.UserV1PasswordCheckSucceededType),
models.EventType(user.HumanPasswordCheckSucceededType),
models.EventType(user.UserIDPLoginCheckSucceededType),
models.EventType(user.HumanPasswordlessTokenCheckSucceededType),
models.EventType(user.HumanPasswordlessTokenCheckFailedType),
models.EventType(user.HumanPasswordlessTokenRemovedType),
models.EventType(user.UserV1PasswordCheckFailedType),
models.EventType(user.HumanPasswordCheckFailedType),
models.EventType(user.UserV1PasswordChangedType),
models.EventType(user.HumanPasswordChangedType),
models.EventType(user.HumanMFAOTPVerifiedType),
models.EventType(user.UserV1MFAOTPCheckSucceededType),
models.EventType(user.HumanMFAOTPCheckSucceededType),
models.EventType(user.UserV1MFAOTPCheckFailedType),
models.EventType(user.UserV1MFAOTPRemovedType),
models.EventType(user.HumanMFAOTPCheckFailedType),
models.EventType(user.HumanMFAOTPRemovedType),
models.EventType(user.HumanU2FTokenCheckFailedType),
models.EventType(user.HumanU2FTokenRemovedType),
models.EventType(user.HumanU2FTokenVerifiedType),
models.EventType(user.HumanU2FTokenCheckSucceededType),
models.EventType(user.UserV1SignedOutType),
models.EventType(user.HumanSignedOutType),
models.EventType(user.UserLockedType),
models.EventType(user.UserDeactivatedType),
models.EventType(user.UserIDPLinkRemovedType),
models.EventType(user.UserIDPLinkCascadeRemovedType),
models.EventType(user.HumanAvatarAddedType),
models.EventType(user.HumanAvatarRemovedType),
}
}