mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 19:17:32 +00:00
fix: creation date argument in search events filters (#6855)
* fix: creation date filter in event queries * fix: creation date with ordering filter * simplify code * simplify review --------- Co-authored-by: Livio Spring <livio.a@gmail.com>
This commit is contained in:
@@ -25,7 +25,8 @@ type SearchQuery struct {
|
||||
Owner *Filter
|
||||
Position *Filter
|
||||
Sequence *Filter
|
||||
CreatedAt *Filter
|
||||
CreatedAfter *Filter
|
||||
CreatedBefore *Filter
|
||||
}
|
||||
|
||||
// Filter represents all fields needed to compare a field of an event with a value
|
||||
@@ -136,6 +137,7 @@ func QueryFromBuilder(builder *eventstore.SearchQueryBuilder) (*SearchQuery, err
|
||||
positionAfterFilter,
|
||||
eventSequenceGreaterFilter,
|
||||
creationDateAfterFilter,
|
||||
creationDateBeforeFilter,
|
||||
} {
|
||||
filter := f(builder, query)
|
||||
if filter == nil {
|
||||
@@ -191,8 +193,16 @@ func creationDateAfterFilter(builder *eventstore.SearchQueryBuilder, query *Sear
|
||||
if builder.GetCreationDateAfter().IsZero() {
|
||||
return nil
|
||||
}
|
||||
query.CreatedAt = NewFilter(FieldCreationDate, builder.GetCreationDateAfter(), OperationGreater)
|
||||
return query.CreatedAt
|
||||
query.CreatedAfter = NewFilter(FieldCreationDate, builder.GetCreationDateAfter(), OperationGreater)
|
||||
return query.CreatedAfter
|
||||
}
|
||||
|
||||
func creationDateBeforeFilter(builder *eventstore.SearchQueryBuilder, query *SearchQuery) *Filter {
|
||||
if builder.GetCreationDateBefore().IsZero() {
|
||||
return nil
|
||||
}
|
||||
query.CreatedBefore = NewFilter(FieldCreationDate, builder.GetCreationDateBefore(), OperationLess)
|
||||
return query.CreatedBefore
|
||||
}
|
||||
|
||||
func resourceOwnerFilter(builder *eventstore.SearchQueryBuilder, query *SearchQuery) *Filter {
|
||||
|
@@ -239,7 +239,14 @@ func prepareConditions(criteria querier, query *repository.SearchQuery, useV1 bo
|
||||
clauses += "(" + strings.Join(subClauses, " OR ") + ")"
|
||||
}
|
||||
|
||||
additionalClauses, additionalArgs := prepareQuery(criteria, useV1, query.Position, query.Owner, query.Sequence, query.CreatedAt, query.Creator)
|
||||
additionalClauses, additionalArgs := prepareQuery(criteria, useV1,
|
||||
query.Position,
|
||||
query.Owner,
|
||||
query.Sequence,
|
||||
query.CreatedAfter,
|
||||
query.CreatedBefore,
|
||||
query.Creator,
|
||||
)
|
||||
if additionalClauses != "" {
|
||||
if clauses != "" {
|
||||
clauses += " AND "
|
||||
|
@@ -25,6 +25,7 @@ type SearchQueryBuilder struct {
|
||||
positionAfter float64
|
||||
awaitOpenTransactions bool
|
||||
creationDateAfter time.Time
|
||||
creationDateBefore time.Time
|
||||
eventSequenceGreater uint64
|
||||
}
|
||||
|
||||
@@ -84,6 +85,10 @@ func (q SearchQueryBuilder) GetCreationDateAfter() time.Time {
|
||||
return q.creationDateAfter
|
||||
}
|
||||
|
||||
func (q SearchQueryBuilder) GetCreationDateBefore() time.Time {
|
||||
return q.creationDateBefore
|
||||
}
|
||||
|
||||
// ensureInstanceID makes sure that the instance id is always set
|
||||
func (b *SearchQueryBuilder) ensureInstanceID(ctx context.Context) {
|
||||
if b.instanceID == nil && authz.GetInstance(ctx).InstanceID() != "" {
|
||||
@@ -256,6 +261,15 @@ func (builder *SearchQueryBuilder) CreationDateAfter(creationDate time.Time) *Se
|
||||
return builder
|
||||
}
|
||||
|
||||
// CreationDateBefore filters for events which happened before the specified time
|
||||
func (builder *SearchQueryBuilder) CreationDateBefore(creationDate time.Time) *SearchQueryBuilder {
|
||||
if creationDate.IsZero() || creationDate.Unix() == 0 {
|
||||
return builder
|
||||
}
|
||||
builder.creationDateBefore = creationDate
|
||||
return builder
|
||||
}
|
||||
|
||||
// AddQuery creates a new sub query.
|
||||
// All fields in the sub query are AND-connected in the storage request.
|
||||
// Multiple sub queries are OR-connected in the storage request.
|
||||
|
Reference in New Issue
Block a user