diff --git a/app/api/controller/gitspace/events.go b/app/api/controller/gitspace/events.go index b208f9195..b7134d9f6 100644 --- a/app/api/controller/gitspace/events.go +++ b/app/api/controller/gitspace/events.go @@ -53,6 +53,11 @@ func (c *Controller) Events( filter.QueryKey = identifier filter.Page = page filter.Size = limit + filter.SkipEvents = []enum.GitspaceEventType{ + enum.GitspaceEventTypeInfraCleanupStart, + enum.GitspaceEventTypeInfraCleanupCompleted, + enum.GitspaceEventTypeInfraCleanupFailed, + } events, count, err := c.gitspaceEventStore.List(ctx, filter) if err != nil { return nil, 0, fmt.Errorf("failed to list gitspace events for identifier %s: %w", identifier, err) diff --git a/app/services/gitspaceinfraevent/handler.go b/app/services/gitspaceinfraevent/handler.go index 71c497444..927d7c046 100644 --- a/app/services/gitspaceinfraevent/handler.go +++ b/app/services/gitspaceinfraevent/handler.go @@ -55,6 +55,13 @@ func (s *Service) handleGitspaceInfraEvent( config.GitspaceInstance = instance } + defer func() { + updateErr := s.gitspaceSvc.UpdateInstance(ctx, instance) + if updateErr != nil { + log.Err(updateErr).Msgf("failed to update gitspace instance") + } + }() + var err error switch payload.Type { @@ -101,14 +108,10 @@ func (s *Service) handleGitspaceInfraEvent( instance.State = instanceState default: + instance.State = enum.GitspaceInstanceStateError return fmt.Errorf("unknown event type: %s", event.Payload.Type) } - updateErr := s.gitspaceSvc.UpdateInstance(ctx, instance) - if updateErr != nil { - log.Err(updateErr).Msgf("failed to update gitspace instance") - } - if err != nil { log.Err(err).Msgf("error while handling gitspace infra event") } diff --git a/app/store/database/gitspace_event.go b/app/store/database/gitspace_event.go index 1deafb66d..0dacf758f 100644 --- a/app/store/database/gitspace_event.go +++ b/app/store/database/gitspace_event.go @@ -173,6 +173,11 @@ func (g gitspaceEventStore) setQueryFilter( if filter.EntityID != 0 { stmt = stmt.Where(squirrel.Eq{"geven_entity_id": filter.EntityID}) } + + if len(filter.SkipEvents) != 0 { + stmt = stmt.Where(squirrel.NotEq{"geven_event": filter.SkipEvents}) + } + return stmt } diff --git a/types/gitspace_event.go b/types/gitspace_event.go index b8c4fcdbc..d63b7009d 100644 --- a/types/gitspace_event.go +++ b/types/gitspace_event.go @@ -37,4 +37,5 @@ type GitspaceEventFilter struct { QueryKey string EntityID int64 EntityType enum.GitspaceEntityType + SkipEvents []enum.GitspaceEventType // not include events }