feat: add time range events filter (#7005)

* feat(console): add time range events filter

* deprecate creation_date, use oneof filter

* use range or from

* implement api

* fix timestamp format

* translate

* styles

* lint

* integration tests

* fix until date

* rearrange sorting control

* sort creation date

* fix events e2e test

* Update console/src/app/modules/filter-events/filter-events.component.html

Co-authored-by: Max Peintner <max@caos.ch>

* Update console/src/app/modules/filter-events/filter-events.component.html

Co-authored-by: Max Peintner <max@caos.ch>

* Update console/src/app/modules/filter-events/filter-events.component.html

Co-authored-by: Max Peintner <max@caos.ch>

* lint

* lint

* don't use utc call time

---------

Co-authored-by: Max Peintner <max@caos.ch>
Co-authored-by: Silvan <silvan.reusser@gmail.com>
This commit is contained in:
Elio Bischof
2023-12-07 11:15:53 +01:00
committed by GitHub
parent 2e505f40f9
commit 9da4abd459
24 changed files with 355 additions and 158 deletions

View File

@@ -2,6 +2,7 @@ package admin
import (
"context"
"time"
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/eventstore"
@@ -36,6 +37,25 @@ func (s *Server) ListAggregateTypes(ctx context.Context, in *admin_pb.ListAggreg
}
func eventRequestToFilter(ctx context.Context, req *admin_pb.ListEventsRequest) (*eventstore.SearchQueryBuilder, error) {
var fromTime, sinceTime, untilTime time.Time
// We ignore the deprecation warning here because we still need to support the deprecated field.
//nolint:staticcheck
if creationDatePb := req.GetCreationDate(); creationDatePb != nil {
fromTime = creationDatePb.AsTime()
}
if fromTimePb := req.GetFrom(); fromTimePb != nil {
fromTime = fromTimePb.AsTime()
}
if timeRange := req.GetRange(); timeRange != nil {
// If range is set, we ignore the from and the deprecated creation_date fields
fromTime = time.Time{}
if timeSincePb := timeRange.GetSince(); timeSincePb != nil {
sinceTime = timeSincePb.AsTime()
}
if timeUntilPb := timeRange.GetUntil(); timeUntilPb != nil {
untilTime = timeUntilPb.AsTime()
}
}
eventTypes := make([]eventstore.EventType, len(req.EventTypes))
for i, eventType := range req.EventTypes {
eventTypes[i] = eventstore.EventType(eventType)
@@ -60,7 +80,9 @@ func eventRequestToFilter(ctx context.Context, req *admin_pb.ListEventsRequest)
AwaitOpenTransactions().
ResourceOwner(req.ResourceOwner).
EditorUser(req.EditorUserId).
SequenceGreater(req.Sequence)
SequenceGreater(req.Sequence).
CreationDateAfter(sinceTime).
CreationDateBefore(untilTime)
if len(aggregateIDs) > 0 || len(aggregateTypes) > 0 || len(eventTypes) > 0 {
builder.AddQuery().
@@ -72,10 +94,9 @@ func eventRequestToFilter(ctx context.Context, req *admin_pb.ListEventsRequest)
if req.GetAsc() {
builder.OrderAsc()
builder.CreationDateAfter(req.CreationDate.AsTime())
builder.CreationDateAfter(fromTime)
} else {
builder.CreationDateBefore(req.CreationDate.AsTime())
builder.CreationDateBefore(fromTime)
}
return builder, nil
}