(ctx context.Context, value string, since *time.Time, onlyActive bool)
| 401 | } |
| 402 | |
| 403 | func (c *Client) CountDecisionsByValue(ctx context.Context, value string, since *time.Time, onlyActive bool) (int, error) { |
| 404 | rng, err := csnet.NewRange(value) |
| 405 | if err != nil { |
| 406 | return 0, fmt.Errorf("unable to convert '%s' to int: %w", value, err) |
| 407 | } |
| 408 | |
| 409 | contains := true |
| 410 | decisions := c.Ent.Decision.Query() |
| 411 | |
| 412 | decisions, err = decisionIPFilter(decisions, contains, rng) |
| 413 | if err != nil { |
| 414 | return 0, fmt.Errorf("fail to apply StartIpEndIpFilter: %w", err) |
| 415 | } |
| 416 | |
| 417 | if since != nil { |
| 418 | decisions = decisions.Where(decision.CreatedAtGT(*since)) |
| 419 | } |
| 420 | |
| 421 | if onlyActive { |
| 422 | decisions = decisions.Where(decision.UntilGT(time.Now().UTC())) |
| 423 | } |
| 424 | |
| 425 | count, err := decisions.Count(ctx) |
| 426 | if err != nil { |
| 427 | return 0, fmt.Errorf("fail to count decisions: %w", err) |
| 428 | } |
| 429 | |
| 430 | return count, nil |
| 431 | } |
| 432 | |
| 433 | func (c *Client) GetActiveDecisionsTimeLeftByValue(ctx context.Context, decisionValue string) (time.Duration, error) { |
| 434 | rng, err := csnet.NewRange(decisionValue) |
no test coverage detected