blob: abc1514f1fe508aba97be4d1fbf8cadcf3e5e4ea [file] [log] [blame]
Don Newton379ae252019-04-01 12:17:06 -04001// Copyright (C) MongoDB, Inc. 2017-present.
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may
4// not use this file except in compliance with the License. You may obtain
5// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
7package mongo
8
9import (
10 "github.com/mongodb/mongo-go-driver/bson"
11)
12
13// IndexOptionsBuilder constructs a BSON document for index options
14type IndexOptionsBuilder struct {
15 document bson.D
16}
17
18// NewIndexOptionsBuilder creates a new instance of IndexOptionsBuilder
19func NewIndexOptionsBuilder() *IndexOptionsBuilder {
20 return &IndexOptionsBuilder{}
21}
22
23// Background sets the background option
24func (iob *IndexOptionsBuilder) Background(background bool) *IndexOptionsBuilder {
25 iob.document = append(iob.document, bson.E{"background", background})
26 return iob
27}
28
29// ExpireAfterSeconds sets the expireAfterSeconds option
30func (iob *IndexOptionsBuilder) ExpireAfterSeconds(expireAfterSeconds int32) *IndexOptionsBuilder {
31 iob.document = append(iob.document, bson.E{"expireAfterSeconds", expireAfterSeconds})
32 return iob
33}
34
35// Name sets the name option
36func (iob *IndexOptionsBuilder) Name(name string) *IndexOptionsBuilder {
37 iob.document = append(iob.document, bson.E{"name", name})
38 return iob
39}
40
41// Sparse sets the sparse option
42func (iob *IndexOptionsBuilder) Sparse(sparse bool) *IndexOptionsBuilder {
43 iob.document = append(iob.document, bson.E{"sparse", sparse})
44 return iob
45}
46
47// StorageEngine sets the storageEngine option
48func (iob *IndexOptionsBuilder) StorageEngine(storageEngine interface{}) *IndexOptionsBuilder {
49 iob.document = append(iob.document, bson.E{"storageEngine", storageEngine})
50 return iob
51}
52
53// Unique sets the unique option
54func (iob *IndexOptionsBuilder) Unique(unique bool) *IndexOptionsBuilder {
55 iob.document = append(iob.document, bson.E{"unique", unique})
56 return iob
57}
58
59// Version sets the version option
60func (iob *IndexOptionsBuilder) Version(version int32) *IndexOptionsBuilder {
61 iob.document = append(iob.document, bson.E{"v", version})
62 return iob
63}
64
65// DefaultLanguage sets the defaultLanguage option
66func (iob *IndexOptionsBuilder) DefaultLanguage(defaultLanguage string) *IndexOptionsBuilder {
67 iob.document = append(iob.document, bson.E{"default_language", defaultLanguage})
68 return iob
69}
70
71// LanguageOverride sets the languageOverride option
72func (iob *IndexOptionsBuilder) LanguageOverride(languageOverride string) *IndexOptionsBuilder {
73 iob.document = append(iob.document, bson.E{"language_override", languageOverride})
74 return iob
75}
76
77// TextVersion sets the textVersion option
78func (iob *IndexOptionsBuilder) TextVersion(textVersion int32) *IndexOptionsBuilder {
79 iob.document = append(iob.document, bson.E{"textIndexVersion", textVersion})
80 return iob
81}
82
83// Weights sets the weights option
84func (iob *IndexOptionsBuilder) Weights(weights interface{}) *IndexOptionsBuilder {
85 iob.document = append(iob.document, bson.E{"weights", weights})
86 return iob
87}
88
89// SphereVersion sets the sphereVersion option
90func (iob *IndexOptionsBuilder) SphereVersion(sphereVersion int32) *IndexOptionsBuilder {
91 iob.document = append(iob.document, bson.E{"2dsphereIndexVersion", sphereVersion})
92 return iob
93}
94
95// Bits sets the bits option
96func (iob *IndexOptionsBuilder) Bits(bits int32) *IndexOptionsBuilder {
97 iob.document = append(iob.document, bson.E{"bits", bits})
98 return iob
99}
100
101// Max sets the max option
102func (iob *IndexOptionsBuilder) Max(max float64) *IndexOptionsBuilder {
103 iob.document = append(iob.document, bson.E{"max", max})
104 return iob
105}
106
107// Min sets the min option
108func (iob *IndexOptionsBuilder) Min(min float64) *IndexOptionsBuilder {
109 iob.document = append(iob.document, bson.E{"min", min})
110 return iob
111}
112
113// BucketSize sets the bucketSize option
114func (iob *IndexOptionsBuilder) BucketSize(bucketSize int32) *IndexOptionsBuilder {
115 iob.document = append(iob.document, bson.E{"bucketSize", bucketSize})
116 return iob
117}
118
119// PartialFilterExpression sets the partialFilterExpression option
120func (iob *IndexOptionsBuilder) PartialFilterExpression(partialFilterExpression interface{}) *IndexOptionsBuilder {
121 iob.document = append(iob.document, bson.E{"partialFilterExpression", partialFilterExpression})
122 return iob
123}
124
125// Collation sets the collation option
126func (iob *IndexOptionsBuilder) Collation(collation interface{}) *IndexOptionsBuilder {
127 iob.document = append(iob.document, bson.E{"collation", collation})
128 return iob
129}
130
131// Build returns the BSON document from the builder
132func (iob *IndexOptionsBuilder) Build() bson.D {
133 return iob.document
134}