// 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 options that can be used to configure an EstimatedDocumentCount operation. type EstimatedDocumentCountOptions struct { // A string or document that will be included in server logs, profiling logs, and currentOp queries to help trace // the operation. The default is nil, which means that no comment will be included in the logs. Comment interface{} // The maximum amount of time that the query can run on the server. The default value is nil, meaning that there // is no time limit for query execution. // // Deprecated: This option is deprecated and will eventually be removed in version 2.0 of the driver. The more general // Timeout option should be used in its place to control the amount of time that the EstimatedDocumentCount operation // can run before returning an error. MaxTime is still usable through the deprecated setter. MaxTime *time.Duration } // EstimatedDocumentCount creates a new EstimatedDocumentCountOptions instance. func EstimatedDocumentCount() *EstimatedDocumentCountOptions { return &EstimatedDocumentCountOptions{} } // SetComment sets the value for the Comment field. func (eco *EstimatedDocumentCountOptions) SetComment(comment interface{}) *EstimatedDocumentCountOptions { eco.Comment = comment return eco } // SetMaxTime sets the value for the MaxTime field. // // Deprecated: This option is deprecated and will eventually be removed in version 2.0 of the driver. The more general // Timeout option should be used in its place to control the amount of time that the EstimatedDocumentCount operation // can run before returning an error. func (eco *EstimatedDocumentCountOptions) SetMaxTime(d time.Duration) *EstimatedDocumentCountOptions { eco.MaxTime = &d return eco } // MergeEstimatedDocumentCountOptions combines the given EstimatedDocumentCountOptions instances 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.Comment != nil { e.Comment = opt.Comment } if opt.MaxTime != nil { e.MaxTime = opt.MaxTime } } return e }