(ctx context.Context, decisionValue string)
| 431 | } |
| 432 | |
| 433 | func (c *Client) GetActiveDecisionsTimeLeftByValue(ctx context.Context, decisionValue string) (time.Duration, error) { |
| 434 | rng, err := csnet.NewRange(decisionValue) |
| 435 | if err != nil { |
| 436 | return 0, fmt.Errorf("unable to convert '%s' to int: %w", decisionValue, err) |
| 437 | } |
| 438 | |
| 439 | contains := true |
| 440 | decisions := c.Ent.Decision.Query().Where( |
| 441 | decision.UntilGT(time.Now().UTC()), |
| 442 | ) |
| 443 | |
| 444 | decisions, err = decisionIPFilter(decisions, contains, rng) |
| 445 | if err != nil { |
| 446 | return 0, fmt.Errorf("fail to apply StartIpEndIpFilter: %w", err) |
| 447 | } |
| 448 | |
| 449 | decisions = decisions.Order(ent.Desc(decision.FieldUntil)) |
| 450 | |
| 451 | decision, err := decisions.First(ctx) |
| 452 | if err != nil && !ent.IsNotFound(err) { |
| 453 | return 0, fmt.Errorf("fail to get decision: %w", err) |
| 454 | } |
| 455 | |
| 456 | if decision == nil { |
| 457 | return 0, nil |
| 458 | } |
| 459 | |
| 460 | return decision.Until.Sub(time.Now().UTC()), nil |
| 461 | } |
no test coverage detected