(ctx context.Context, now time.Time, since *time.Time, filter map[string][]string)
| 199 | } |
| 200 | |
| 201 | func (c *Client) QueryNewDecisionsSinceWithFilters(ctx context.Context, now time.Time, since *time.Time, filter map[string][]string) ([]*ent.Decision, error) { |
| 202 | query := c.Ent.Decision.Query(). |
| 203 | Select(decision.FieldID, decision.FieldUntil, decision.FieldScenario, decision.FieldScope, decision.FieldValue, decision.FieldType, decision.FieldOrigin, decision.FieldUUID). |
| 204 | Where( |
| 205 | decision.UntilGT(now), |
| 206 | ) |
| 207 | |
| 208 | errorMsg := "new decisions" |
| 209 | |
| 210 | if since != nil { |
| 211 | query = query.Where(decision.CreatedAtGT(*since)) |
| 212 | |
| 213 | errorMsg = fmt.Sprintf("%s since %q", errorMsg, since) |
| 214 | } |
| 215 | |
| 216 | // Allow a bouncer to ask for non-deduplicated results |
| 217 | if v, ok := filter["dedup"]; !ok || v[0] != "false" { |
| 218 | query = query.Where(longestDecisionForScopeTypeValue) |
| 219 | } |
| 220 | |
| 221 | query, err := applyDecisionFilter(query, filter) |
| 222 | if err != nil { |
| 223 | c.Log.Warningf("QueryNewDecisionsSinceWithFilters : %s", err) |
| 224 | |
| 225 | return nil, fmt.Errorf("%w: %s", QueryFail, errorMsg) |
| 226 | } |
| 227 | |
| 228 | query = query.Order(ent.Asc(decision.FieldID)) |
| 229 | |
| 230 | data, err := query.All(ctx) |
| 231 | if err != nil { |
| 232 | c.Log.Warningf("QueryNewDecisionsSinceWithFilters : %s", err) |
| 233 | |
| 234 | return nil, fmt.Errorf("%w: %s", QueryFail, errorMsg) |
| 235 | } |
| 236 | |
| 237 | return data, nil |
| 238 | } |
| 239 | |
| 240 | // ExpireDecisionsWithFilter updates the expiration time to now() for the decisions matching the filter, and returns the updated items |
| 241 | func (c *Client) ExpireDecisionsWithFilter(ctx context.Context, filter map[string][]string) (int, []*ent.Decision, error) { |
nothing calls this directly
no test coverage detected