seba-365 - implemented dep
Change-Id: Ia6226d50e7615935a0c8876809a687427ff88c22
diff --git a/vendor/github.com/mongodb/mongo-go-driver/mongo/bulk_write.go b/vendor/github.com/mongodb/mongo-go-driver/mongo/bulk_write.go
new file mode 100644
index 0000000..f086189
--- /dev/null
+++ b/vendor/github.com/mongodb/mongo-go-driver/mongo/bulk_write.go
@@ -0,0 +1,341 @@
+// 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/mongo/options"
+ "github.com/mongodb/mongo-go-driver/x/mongo/driver"
+)
+
+// WriteModel is the interface satisfied by all models for bulk writes.
+type WriteModel interface {
+ convertModel() driver.WriteModel
+}
+
+// InsertOneModel is the write model for insert operations.
+type InsertOneModel struct {
+ Document interface{}
+}
+
+// NewInsertOneModel creates a new InsertOneModel.
+func NewInsertOneModel() *InsertOneModel {
+ return &InsertOneModel{}
+}
+
+// SetDocument sets the BSON document for the InsertOneModel.
+func (iom *InsertOneModel) SetDocument(doc interface{}) *InsertOneModel {
+ iom.Document = doc
+ return iom
+}
+
+func (iom *InsertOneModel) convertModel() driver.WriteModel {
+ return driver.InsertOneModel{
+ Document: iom.Document,
+ }
+}
+
+// DeleteOneModel is the write model for delete operations.
+type DeleteOneModel struct {
+ Filter interface{}
+ Collation *options.Collation
+}
+
+// NewDeleteOneModel creates a new DeleteOneModel.
+func NewDeleteOneModel() *DeleteOneModel {
+ return &DeleteOneModel{}
+}
+
+// SetFilter sets the filter for the DeleteOneModel.
+func (dom *DeleteOneModel) SetFilter(filter interface{}) *DeleteOneModel {
+ dom.Filter = filter
+ return dom
+}
+
+// SetCollation sets the collation for the DeleteOneModel.
+func (dom *DeleteOneModel) SetCollation(collation *options.Collation) *DeleteOneModel {
+ dom.Collation = collation
+ return dom
+}
+
+func (dom *DeleteOneModel) convertModel() driver.WriteModel {
+ return driver.DeleteOneModel{
+ Collation: dom.Collation,
+ Filter: dom.Filter,
+ }
+}
+
+// DeleteManyModel is the write model for deleteMany operations.
+type DeleteManyModel struct {
+ Filter interface{}
+ Collation *options.Collation
+}
+
+// NewDeleteManyModel creates a new DeleteManyModel.
+func NewDeleteManyModel() *DeleteManyModel {
+ return &DeleteManyModel{}
+}
+
+// SetFilter sets the filter for the DeleteManyModel.
+func (dmm *DeleteManyModel) SetFilter(filter interface{}) *DeleteManyModel {
+ dmm.Filter = filter
+ return dmm
+}
+
+// SetCollation sets the collation for the DeleteManyModel.
+func (dmm *DeleteManyModel) SetCollation(collation *options.Collation) *DeleteManyModel {
+ dmm.Collation = collation
+ return dmm
+}
+
+func (dmm *DeleteManyModel) convertModel() driver.WriteModel {
+ return driver.DeleteManyModel{
+ Collation: dmm.Collation,
+ Filter: dmm.Filter,
+ }
+}
+
+// ReplaceOneModel is the write model for replace operations.
+type ReplaceOneModel struct {
+ Collation *options.Collation
+ Upsert *bool
+ Filter interface{}
+ Replacement interface{}
+}
+
+// NewReplaceOneModel creates a new ReplaceOneModel.
+func NewReplaceOneModel() *ReplaceOneModel {
+ return &ReplaceOneModel{}
+}
+
+// SetFilter sets the filter for the ReplaceOneModel.
+func (rom *ReplaceOneModel) SetFilter(filter interface{}) *ReplaceOneModel {
+ rom.Filter = filter
+ return rom
+}
+
+// SetReplacement sets the replacement document for the ReplaceOneModel.
+func (rom *ReplaceOneModel) SetReplacement(rep interface{}) *ReplaceOneModel {
+ rom.Replacement = rep
+ return rom
+}
+
+// SetCollation sets the collation for the ReplaceOneModel.
+func (rom *ReplaceOneModel) SetCollation(collation *options.Collation) *ReplaceOneModel {
+ rom.Collation = collation
+ return rom
+}
+
+// SetUpsert specifies if a new document should be created if no document matches the query.
+func (rom *ReplaceOneModel) SetUpsert(upsert bool) *ReplaceOneModel {
+ rom.Upsert = &upsert
+ return rom
+}
+
+func (rom *ReplaceOneModel) convertModel() driver.WriteModel {
+ um := driver.UpdateModel{
+ Collation: rom.Collation,
+ }
+ if rom.Upsert != nil {
+ um.Upsert = *rom.Upsert
+ um.UpsertSet = true
+ }
+
+ return driver.ReplaceOneModel{
+ UpdateModel: um,
+ Filter: rom.Filter,
+ Replacement: rom.Replacement,
+ }
+}
+
+// UpdateOneModel is the write model for update operations.
+type UpdateOneModel struct {
+ Collation *options.Collation
+ Upsert *bool
+ Filter interface{}
+ Update interface{}
+ ArrayFilters *options.ArrayFilters
+}
+
+// NewUpdateOneModel creates a new UpdateOneModel.
+func NewUpdateOneModel() *UpdateOneModel {
+ return &UpdateOneModel{}
+}
+
+// SetFilter sets the filter for the UpdateOneModel.
+func (uom *UpdateOneModel) SetFilter(filter interface{}) *UpdateOneModel {
+ uom.Filter = filter
+ return uom
+}
+
+// SetUpdate sets the update document for the UpdateOneModel.
+func (uom *UpdateOneModel) SetUpdate(update interface{}) *UpdateOneModel {
+ uom.Update = update
+ return uom
+}
+
+// SetArrayFilters specifies a set of filters specifying to which array elements an update should apply.
+func (uom *UpdateOneModel) SetArrayFilters(filters options.ArrayFilters) *UpdateOneModel {
+ uom.ArrayFilters = &filters
+ return uom
+}
+
+// SetCollation sets the collation for the UpdateOneModel.
+func (uom *UpdateOneModel) SetCollation(collation *options.Collation) *UpdateOneModel {
+ uom.Collation = collation
+ return uom
+}
+
+// SetUpsert specifies if a new document should be created if no document matches the query.
+func (uom *UpdateOneModel) SetUpsert(upsert bool) *UpdateOneModel {
+ uom.Upsert = &upsert
+ return uom
+}
+
+func (uom *UpdateOneModel) convertModel() driver.WriteModel {
+ um := driver.UpdateModel{
+ Collation: uom.Collation,
+ }
+ if uom.Upsert != nil {
+ um.Upsert = *uom.Upsert
+ um.UpsertSet = true
+ }
+
+ converted := driver.UpdateOneModel{
+ UpdateModel: um,
+ Filter: uom.Filter,
+ Update: uom.Update,
+ }
+ if uom.ArrayFilters != nil {
+ converted.ArrayFilters = *uom.ArrayFilters
+ converted.ArrayFiltersSet = true
+ }
+
+ return converted
+}
+
+// UpdateManyModel is the write model for updateMany operations.
+type UpdateManyModel struct {
+ Collation *options.Collation
+ Upsert *bool
+ Filter interface{}
+ Update interface{}
+ ArrayFilters *options.ArrayFilters
+}
+
+// NewUpdateManyModel creates a new UpdateManyModel.
+func NewUpdateManyModel() *UpdateManyModel {
+ return &UpdateManyModel{}
+}
+
+// SetFilter sets the filter for the UpdateManyModel.
+func (umm *UpdateManyModel) SetFilter(filter interface{}) *UpdateManyModel {
+ umm.Filter = filter
+ return umm
+}
+
+// SetUpdate sets the update document for the UpdateManyModel.
+func (umm *UpdateManyModel) SetUpdate(update interface{}) *UpdateManyModel {
+ umm.Update = update
+ return umm
+}
+
+// SetArrayFilters specifies a set of filters specifying to which array elements an update should apply.
+func (umm *UpdateManyModel) SetArrayFilters(filters options.ArrayFilters) *UpdateManyModel {
+ umm.ArrayFilters = &filters
+ return umm
+}
+
+// SetCollation sets the collation for the UpdateManyModel.
+func (umm *UpdateManyModel) SetCollation(collation *options.Collation) *UpdateManyModel {
+ umm.Collation = collation
+ return umm
+}
+
+// SetUpsert specifies if a new document should be created if no document matches the query.
+func (umm *UpdateManyModel) SetUpsert(upsert bool) *UpdateManyModel {
+ umm.Upsert = &upsert
+ return umm
+}
+
+func (umm *UpdateManyModel) convertModel() driver.WriteModel {
+ um := driver.UpdateModel{
+ Collation: umm.Collation,
+ }
+ if umm.Upsert != nil {
+ um.Upsert = *umm.Upsert
+ um.UpsertSet = true
+ }
+
+ converted := driver.UpdateManyModel{
+ UpdateModel: um,
+ Filter: umm.Filter,
+ Update: umm.Update,
+ }
+ if umm.ArrayFilters != nil {
+ converted.ArrayFilters = *umm.ArrayFilters
+ converted.ArrayFiltersSet = true
+ }
+
+ return converted
+}
+
+func dispatchToMongoModel(model driver.WriteModel) WriteModel {
+ switch conv := model.(type) {
+ case driver.InsertOneModel:
+ return &InsertOneModel{
+ Document: conv.Document,
+ }
+ case driver.DeleteOneModel:
+ return &DeleteOneModel{
+ Filter: conv.Filter,
+ Collation: conv.Collation,
+ }
+ case driver.DeleteManyModel:
+ return &DeleteManyModel{
+ Filter: conv.Filter,
+ Collation: conv.Collation,
+ }
+ case driver.ReplaceOneModel:
+ rom := &ReplaceOneModel{
+ Filter: conv.Filter,
+ Replacement: conv.Replacement,
+ Collation: conv.Collation,
+ }
+ if conv.UpsertSet {
+ rom.Upsert = &conv.Upsert
+ }
+ return rom
+ case driver.UpdateOneModel:
+ uom := &UpdateOneModel{
+ Filter: conv.Filter,
+ Update: conv.Update,
+ Collation: conv.Collation,
+ }
+ if conv.UpsertSet {
+ uom.Upsert = &conv.Upsert
+ }
+ if conv.ArrayFiltersSet {
+ uom.ArrayFilters = &conv.ArrayFilters
+ }
+ return uom
+ case driver.UpdateManyModel:
+ umm := &UpdateManyModel{
+ Filter: conv.Filter,
+ Update: conv.Update,
+ Collation: conv.Collation,
+ }
+ if conv.UpsertSet {
+ umm.Upsert = &conv.Upsert
+ }
+ if conv.ArrayFiltersSet {
+ umm.ArrayFilters = &conv.ArrayFilters
+ }
+ return umm
+ }
+
+ return nil
+}