| // 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 mongo |
| |
| import ( |
| "github.com/mongodb/mongo-go-driver/bson" |
| ) |
| |
| // IndexOptionsBuilder constructs a BSON document for index options |
| type IndexOptionsBuilder struct { |
| document bson.D |
| } |
| |
| // NewIndexOptionsBuilder creates a new instance of IndexOptionsBuilder |
| func NewIndexOptionsBuilder() *IndexOptionsBuilder { |
| return &IndexOptionsBuilder{} |
| } |
| |
| // Background sets the background option |
| func (iob *IndexOptionsBuilder) Background(background bool) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"background", background}) |
| return iob |
| } |
| |
| // ExpireAfterSeconds sets the expireAfterSeconds option |
| func (iob *IndexOptionsBuilder) ExpireAfterSeconds(expireAfterSeconds int32) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"expireAfterSeconds", expireAfterSeconds}) |
| return iob |
| } |
| |
| // Name sets the name option |
| func (iob *IndexOptionsBuilder) Name(name string) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"name", name}) |
| return iob |
| } |
| |
| // Sparse sets the sparse option |
| func (iob *IndexOptionsBuilder) Sparse(sparse bool) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"sparse", sparse}) |
| return iob |
| } |
| |
| // StorageEngine sets the storageEngine option |
| func (iob *IndexOptionsBuilder) StorageEngine(storageEngine interface{}) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"storageEngine", storageEngine}) |
| return iob |
| } |
| |
| // Unique sets the unique option |
| func (iob *IndexOptionsBuilder) Unique(unique bool) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"unique", unique}) |
| return iob |
| } |
| |
| // Version sets the version option |
| func (iob *IndexOptionsBuilder) Version(version int32) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"v", version}) |
| return iob |
| } |
| |
| // DefaultLanguage sets the defaultLanguage option |
| func (iob *IndexOptionsBuilder) DefaultLanguage(defaultLanguage string) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"default_language", defaultLanguage}) |
| return iob |
| } |
| |
| // LanguageOverride sets the languageOverride option |
| func (iob *IndexOptionsBuilder) LanguageOverride(languageOverride string) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"language_override", languageOverride}) |
| return iob |
| } |
| |
| // TextVersion sets the textVersion option |
| func (iob *IndexOptionsBuilder) TextVersion(textVersion int32) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"textIndexVersion", textVersion}) |
| return iob |
| } |
| |
| // Weights sets the weights option |
| func (iob *IndexOptionsBuilder) Weights(weights interface{}) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"weights", weights}) |
| return iob |
| } |
| |
| // SphereVersion sets the sphereVersion option |
| func (iob *IndexOptionsBuilder) SphereVersion(sphereVersion int32) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"2dsphereIndexVersion", sphereVersion}) |
| return iob |
| } |
| |
| // Bits sets the bits option |
| func (iob *IndexOptionsBuilder) Bits(bits int32) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"bits", bits}) |
| return iob |
| } |
| |
| // Max sets the max option |
| func (iob *IndexOptionsBuilder) Max(max float64) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"max", max}) |
| return iob |
| } |
| |
| // Min sets the min option |
| func (iob *IndexOptionsBuilder) Min(min float64) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"min", min}) |
| return iob |
| } |
| |
| // BucketSize sets the bucketSize option |
| func (iob *IndexOptionsBuilder) BucketSize(bucketSize int32) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"bucketSize", bucketSize}) |
| return iob |
| } |
| |
| // PartialFilterExpression sets the partialFilterExpression option |
| func (iob *IndexOptionsBuilder) PartialFilterExpression(partialFilterExpression interface{}) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"partialFilterExpression", partialFilterExpression}) |
| return iob |
| } |
| |
| // Collation sets the collation option |
| func (iob *IndexOptionsBuilder) Collation(collation interface{}) *IndexOptionsBuilder { |
| iob.document = append(iob.document, bson.E{"collation", collation}) |
| return iob |
| } |
| |
| // Build returns the BSON document from the builder |
| func (iob *IndexOptionsBuilder) Build() bson.D { |
| return iob.document |
| } |