| // Copyright (C) MongoDB, Inc. 2017-present. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); you may |
| // not use this file except in compliance with the License. You may obtain |
| // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 |
| |
| package options |
| |
| import "time" |
| |
| // EstimatedDocumentCountOptions represents all possible options to the estimatedDocumentCount() function |
| type EstimatedDocumentCountOptions struct { |
| MaxTime *time.Duration // The maximum amount of time to allow the operation to run |
| } |
| |
| // EstimatedDocumentCount returns a pointer to a new EstimatedDocumentCountOptions |
| func EstimatedDocumentCount() *EstimatedDocumentCountOptions { |
| return &EstimatedDocumentCountOptions{} |
| } |
| |
| // SetMaxTime specifies the maximum amount of time to allow the operation to run |
| func (eco *EstimatedDocumentCountOptions) SetMaxTime(d time.Duration) *EstimatedDocumentCountOptions { |
| eco.MaxTime = &d |
| return eco |
| } |
| |
| // MergeEstimatedDocumentCountOptions combines the given *EstimatedDocumentCountOptions into a single |
| // *EstimatedDocumentCountOptions in a last one wins fashion. |
| func MergeEstimatedDocumentCountOptions(opts ...*EstimatedDocumentCountOptions) *EstimatedDocumentCountOptions { |
| e := EstimatedDocumentCount() |
| for _, opt := range opts { |
| if opt == nil { |
| continue |
| } |
| |
| if opt.MaxTime != nil { |
| e.MaxTime = opt.MaxTime |
| } |
| } |
| |
| return e |
| } |