| 55 | } |
| 56 | |
| 57 | func (c *Client) QueryExpiredDecisionsWithFilters(ctx context.Context, now time.Time, filter map[string][]string) ([]*ent.Decision, error) { |
| 58 | query := c.Ent.Decision.Query(). |
| 59 | Select(decision.FieldID, decision.FieldUntil, decision.FieldScenario, decision.FieldScope, decision.FieldValue, decision.FieldType, decision.FieldOrigin, decision.FieldUUID). |
| 60 | Where( |
| 61 | decision.UntilLT(now), |
| 62 | ) |
| 63 | // Allow a bouncer to ask for non-deduplicated results |
| 64 | if v, ok := filter["dedup"]; !ok || v[0] != "false" { |
| 65 | query = query.Where(longestDecisionForScopeTypeValue) |
| 66 | } |
| 67 | |
| 68 | query, err := applyDecisionFilter(query, filter) |
| 69 | if err != nil { |
| 70 | c.Log.Warningf("QueryExpiredDecisionsWithFilters : %s", err) |
| 71 | return []*ent.Decision{}, fmt.Errorf("get expired decisions with filters: %w", QueryFail) |
| 72 | } |
| 73 | |
| 74 | query = query.Order(ent.Asc(decision.FieldID)) |
| 75 | |
| 76 | data, err := query.All(ctx) |
| 77 | if err != nil { |
| 78 | c.Log.Warningf("QueryExpiredDecisionsWithFilters : %s", err) |
| 79 | return []*ent.Decision{}, fmt.Errorf("expired decisions: %w", QueryFail) |
| 80 | } |
| 81 | |
| 82 | return data, nil |
| 83 | } |
| 84 | |
| 85 | func (c *Client) QueryDecisionCountByScenario(ctx context.Context) ([]*DecisionsByScenario, error) { |
| 86 | query := c.Ent.Decision.Query().Where( |