Skip to content

Commit 5fea144

Browse files
committed
Merge branch 'pr/74'
GODRIVER-157 GODRIVER-272 GODRIVER-335 GODRIVER-356 GODRIVER-350 GODRIVER-450 Change-Id: I713dc0fba4bbdee2445349262ea653d101e1299c
2 parents 1e92b4c + 882b279 commit 5fea144

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+11518
-1206
lines changed

core/command/find.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func (f *Find) Encode(desc description.SelectedServer) (wiremessage.WireMessage,
5656
batchSize = int32(t)
5757
err = opt.Option(command)
5858
case option.OptProjection:
59-
err = t.IsFind().Option(command)
59+
err = t.Option(command)
6060
default:
6161
err = opt.Option(command)
6262
}

core/command/list_collections.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/mongodb/mongo-go-driver/bson"
1313
"github.com/mongodb/mongo-go-driver/core/description"
1414
"github.com/mongodb/mongo-go-driver/core/option"
15+
"github.com/mongodb/mongo-go-driver/core/readpref"
1516
"github.com/mongodb/mongo-go-driver/core/wiremessage"
1617
)
1718

@@ -23,8 +24,9 @@ type ListCollections struct {
2324
Filter *bson.Document
2425
Opts []option.ListCollectionsOptioner
2526

26-
result Cursor
27-
err error
27+
result Cursor
28+
ReadPref *readpref.ReadPref
29+
err error
2830
}
2931

3032
// Encode will encode this command into a wire message for the given server description.
@@ -45,7 +47,7 @@ func (lc *ListCollections) Encode(desc description.SelectedServer) (wiremessage.
4547
}
4648
}
4749

48-
return (&Command{DB: lc.DB, Command: cmd, isWrite: true}).Encode(desc)
50+
return (&Command{DB: lc.DB, Command: cmd, isWrite: true, ReadPref: lc.ReadPref}).Encode(desc)
4951
}
5052

5153
// Decode will decode the wire message using the provided server description. Errors during decoding

core/dispatch/aggregate.go

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,24 +38,10 @@ func Aggregate(
3838
return nil, err
3939
}
4040
if wc != nil {
41-
elem, err := wc.MarshalBSONElement()
42-
if err != nil {
43-
return nil, err
44-
}
45-
46-
opt := option.OptWriteConcern{WriteConcern: elem, Acknowledged: wc.Acknowledged()}
41+
opt := option.OptWriteConcern{WriteConcern: wc}
4742
cmd.Opts = append(cmd.Opts, opt)
43+
acknowledged = wc.Acknowledged()
4844
}
49-
50-
for _, opt := range cmd.Opts {
51-
wc, ok := opt.(option.OptWriteConcern)
52-
if !ok {
53-
continue
54-
}
55-
acknowledged = wc.Acknowledged
56-
break
57-
}
58-
5945
case false:
6046
ss, err = topo.SelectServer(ctx, readSelector)
6147
if err != nil {

core/dispatch/delete.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
"github.com/mongodb/mongo-go-driver/core/command"
1313
"github.com/mongodb/mongo-go-driver/core/description"
14-
"github.com/mongodb/mongo-go-driver/core/option"
1514
"github.com/mongodb/mongo-go-driver/core/result"
1615
"github.com/mongodb/mongo-go-driver/core/topology"
1716
"github.com/mongodb/mongo-go-driver/core/writeconcern"
@@ -32,27 +31,16 @@ func Delete(
3231
return result.Delete{}, err
3332
}
3433

34+
acknowledged := true
3535
if wc != nil {
3636
opt, err := writeConcernOption(wc)
3737
if err != nil {
3838
return result.Delete{}, err
3939
}
4040
cmd.Opts = append(cmd.Opts, opt)
41+
acknowledged = wc.Acknowledged()
4142
}
4243

43-
// NOTE: We iterate through the options because the user may have provided
44-
// an option explicitly and that needs to override the provided write concern.
45-
// We put this here because it would complicate the methods that call this to
46-
// parse out the option.
47-
acknowledged := true
48-
for _, opt := range cmd.Opts {
49-
wc, ok := opt.(option.OptWriteConcern)
50-
if !ok {
51-
continue
52-
}
53-
acknowledged = wc.Acknowledged
54-
break
55-
}
5644
desc := ss.Description()
5745
conn, err := ss.Connection(ctx)
5846
if err != nil {

core/dispatch/dispatch.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,9 @@ import (
1919
var ErrUnacknowledgedWrite = errors.New("unacknowledged write")
2020

2121
func writeConcernOption(wc *writeconcern.WriteConcern) (option.OptWriteConcern, error) {
22-
elem, err := wc.MarshalBSONElement()
23-
if err != nil {
24-
return option.OptWriteConcern{}, err
25-
}
26-
return option.OptWriteConcern{WriteConcern: elem, Acknowledged: wc.Acknowledged()}, nil
22+
return option.OptWriteConcern{WriteConcern: wc}, nil
2723
}
2824

2925
func readConcernOption(rc *readconcern.ReadConcern) (option.OptReadConcern, error) {
30-
elem, err := rc.MarshalBSONElement()
31-
if err != nil {
32-
return option.OptReadConcern{}, err
33-
}
34-
return option.OptReadConcern{ReadConcern: elem}, nil
26+
return option.OptReadConcern{ReadConcern: rc}, nil
3527
}

core/dispatch/find_one_and_delete.go

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
"github.com/mongodb/mongo-go-driver/core/command"
1313
"github.com/mongodb/mongo-go-driver/core/description"
14-
"github.com/mongodb/mongo-go-driver/core/option"
1514
"github.com/mongodb/mongo-go-driver/core/result"
1615
"github.com/mongodb/mongo-go-driver/core/topology"
1716
"github.com/mongodb/mongo-go-driver/core/writeconcern"
@@ -32,26 +31,14 @@ func FindOneAndDelete(
3231
return result.FindAndModify{}, err
3332
}
3433

34+
acknowledged := true
3535
if wc != nil {
3636
opt, err := writeConcernOption(wc)
3737
if err != nil {
3838
return result.FindAndModify{}, err
3939
}
4040
cmd.Opts = append(cmd.Opts, opt)
41-
}
42-
43-
// NOTE: We iterate through the options because the user may have provided
44-
// an option explicitly and that needs to override the provided write concern.
45-
// We put this here because it would complicate the methods that call this to
46-
// parse out the option.
47-
acknowledged := true
48-
for _, opt := range cmd.Opts {
49-
wc, ok := opt.(option.OptWriteConcern)
50-
if !ok {
51-
continue
52-
}
53-
acknowledged = wc.Acknowledged
54-
break
41+
acknowledged = wc.Acknowledged()
5542
}
5643

5744
desc := ss.Description()

core/dispatch/find_one_and_replace.go

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
"github.com/mongodb/mongo-go-driver/core/command"
1313
"github.com/mongodb/mongo-go-driver/core/description"
14-
"github.com/mongodb/mongo-go-driver/core/option"
1514
"github.com/mongodb/mongo-go-driver/core/result"
1615
"github.com/mongodb/mongo-go-driver/core/topology"
1716
"github.com/mongodb/mongo-go-driver/core/writeconcern"
@@ -32,26 +31,14 @@ func FindOneAndReplace(
3231
return result.FindAndModify{}, err
3332
}
3433

34+
acknowledged := true
3535
if wc != nil {
3636
opt, err := writeConcernOption(wc)
3737
if err != nil {
3838
return result.FindAndModify{}, err
3939
}
4040
cmd.Opts = append(cmd.Opts, opt)
41-
}
42-
43-
// NOTE: We iterate through the options because the user may have provided
44-
// an option explicitly and that needs to override the provided write concern.
45-
// We put this here because it would complicate the methods that call this to
46-
// parse out the option.
47-
acknowledged := true
48-
for _, opt := range cmd.Opts {
49-
wc, ok := opt.(option.OptWriteConcern)
50-
if !ok {
51-
continue
52-
}
53-
acknowledged = wc.Acknowledged
54-
break
41+
acknowledged = wc.Acknowledged()
5542
}
5643

5744
desc := ss.Description()

core/dispatch/find_one_and_update.go

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
"github.com/mongodb/mongo-go-driver/core/command"
1313
"github.com/mongodb/mongo-go-driver/core/description"
14-
"github.com/mongodb/mongo-go-driver/core/option"
1514
"github.com/mongodb/mongo-go-driver/core/result"
1615
"github.com/mongodb/mongo-go-driver/core/topology"
1716
"github.com/mongodb/mongo-go-driver/core/writeconcern"
@@ -32,26 +31,14 @@ func FindOneAndUpdate(
3231
return result.FindAndModify{}, err
3332
}
3433

34+
acknowledged := true
3535
if wc != nil {
3636
opt, err := writeConcernOption(wc)
3737
if err != nil {
3838
return result.FindAndModify{}, err
3939
}
4040
cmd.Opts = append(cmd.Opts, opt)
41-
}
42-
43-
// NOTE: We iterate through the options because the user may have provided
44-
// an option explicitly and that needs to override the provided write concern.
45-
// We put this here because it would complicate the methods that call this to
46-
// parse out the option.
47-
acknowledged := true
48-
for _, opt := range cmd.Opts {
49-
wc, ok := opt.(option.OptWriteConcern)
50-
if !ok {
51-
continue
52-
}
53-
acknowledged = wc.Acknowledged
54-
break
41+
acknowledged = wc.Acknowledged()
5542
}
5643

5744
desc := ss.Description()

core/dispatch/insert.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
"github.com/mongodb/mongo-go-driver/core/command"
1313
"github.com/mongodb/mongo-go-driver/core/description"
14-
"github.com/mongodb/mongo-go-driver/core/option"
1514
"github.com/mongodb/mongo-go-driver/core/result"
1615
"github.com/mongodb/mongo-go-driver/core/topology"
1716
"github.com/mongodb/mongo-go-driver/core/writeconcern"
@@ -32,27 +31,16 @@ func Insert(
3231
return result.Insert{}, err
3332
}
3433

34+
acknowledged := true
3535
if wc != nil {
3636
opt, err := writeConcernOption(wc)
3737
if err != nil {
3838
return result.Insert{}, err
3939
}
4040
cmd.Opts = append(cmd.Opts, opt)
41+
acknowledged = wc.Acknowledged()
4142
}
4243

43-
// NOTE: We iterate through the options because the user may have provided
44-
// an option explicitly and that needs to override the provided write concern.
45-
// We put this here because it would complicate the methods that call this to
46-
// parse out the option.
47-
acknowledged := true
48-
for _, opt := range cmd.Opts {
49-
wc, ok := opt.(option.OptWriteConcern)
50-
if !ok {
51-
continue
52-
}
53-
acknowledged = wc.Acknowledged
54-
break
55-
}
5644
desc := ss.Description()
5745
conn, err := ss.Connection(ctx)
5846
if err != nil {

core/dispatch/update.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
"github.com/mongodb/mongo-go-driver/core/command"
1313
"github.com/mongodb/mongo-go-driver/core/description"
14-
"github.com/mongodb/mongo-go-driver/core/option"
1514
"github.com/mongodb/mongo-go-driver/core/result"
1615
"github.com/mongodb/mongo-go-driver/core/topology"
1716
"github.com/mongodb/mongo-go-driver/core/writeconcern"
@@ -32,27 +31,16 @@ func Update(
3231
return result.Update{}, err
3332
}
3433

34+
acknowledged := true
3535
if wc != nil {
3636
opt, err := writeConcernOption(wc)
3737
if err != nil {
3838
return result.Update{}, err
3939
}
4040
cmd.Opts = append(cmd.Opts, opt)
41+
acknowledged = wc.Acknowledged()
4142
}
4243

43-
// NOTE: We iterate through the options because the user may have provided
44-
// an option explicitly and that needs to override the provided write concern.
45-
// We put this here because it would complicate the methods that call this to
46-
// parse out the option.
47-
acknowledged := true
48-
for _, opt := range cmd.Opts {
49-
wc, ok := opt.(option.OptWriteConcern)
50-
if !ok {
51-
continue
52-
}
53-
acknowledged = wc.Acknowledged
54-
break
55-
}
5644
desc := ss.Description()
5745
conn, err := ss.Connection(ctx)
5846
if err != nil {

0 commit comments

Comments
 (0)