public ISqlAsyncPolicyBuilder WithDefaultPolicies()
 {
     _policies.Add(AsyncPolicies.GetTimeOutPolicy(_overallTimeout, PolicyKeys.SqlOverallTimeoutAsyncPolicy));
     _policies.Add(AsyncPolicies.GetCommonTransientErrorsPolicies(RetryCount));
     _policies.AddRange(AsyncPolicies.GetCircuitBreakerPolicies(ExceptionsAllowedBeforeBreaking));
     return(this);
 }
 public ISqlAsyncPolicyBuilder WithOverallAndTimeoutPerRetry(TimeSpan overallTimeout, TimeSpan timeoutPerRetry)
 {
     _policies.Add(AsyncPolicies.GetTimeOutPolicy(_overallTimeout, PolicyKeys.SqlOverallTimeoutAsyncPolicy));
     _policies.Add(AsyncPolicies.GetTimeOutPolicy(timeoutPerRetry, PolicyKeys.SqlTimeoutPerRetryAsyncPolicy));
     return(this);
 }
 public ISqlAsyncPolicyBuilder WithTimeoutPerRetry(TimeSpan timeout)
 {
     _policies.Add(AsyncPolicies.GetTimeOutPolicy(timeout, PolicyKeys.SqlTimeoutPerRetryAsyncPolicy));
     return(this);
 }
 public ISqlAsyncPolicyBuilder WithOverallTimeout(TimeSpan timeout)
 {
     _policies.Add(AsyncPolicies.GetTimeOutPolicy(timeout, PolicyKeys.SqlOverallTimeoutAsyncPolicy));
     return(this);
 }
 public ISqlAsyncPolicyBuilder WithFallback(Func <Task> action)
 {
     _policies.Add(AsyncPolicies.GetFallbackPolicy(action));
     return(this);
 }
 public ISqlAsyncPolicyBuilder WithCircuitBreaker(int exceptionsAllowedBeforeBreaking)
 {
     _policies.AddRange(AsyncPolicies.GetCircuitBreakerPolicies(ExceptionsAllowedBeforeBreaking));
     return(this);
 }
 public ISqlAsyncPolicyBuilder WithTransaction()
 {
     _policies.Add(AsyncPolicies.GetTransactionPolicy(RetryCount));
     return(this);
 }
 public ISqlAsyncPolicyBuilder WithTransientErrors(int retryCount)
 {
     _policies.Add(AsyncPolicies.GetCommonTransientErrorsPolicies(RetryCount));
     return(this);
 }