// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 package mongodb import "go.mongodb.org/mongo-driver/mongo/writeconcern" type createUserCommand struct { Username string `bson:"createUser"` Password string `bson:"pwd,omitempty"` Roles []interface{} `bson:"roles"` } type updateUserCommand struct { Username string `bson:"updateUser"` Password string `bson:"pwd"` } type dropUserCommand struct { Username string `bson:"dropUser"` WriteConcern *writeconcern.WriteConcern `bson:"writeConcern"` } type mongodbRole struct { Role string `json:"role" bson:"role"` DB string `json:"db" bson:"db"` } type mongodbRoles []mongodbRole type mongoDBStatement struct { DB string `json:"db"` Roles mongodbRoles `json:"roles"` } // Convert array of role documents like: // // [ { "role": "readWrite" }, { "role": "readWrite", "db": "test" } ] // // into a "standard" MongoDB roles array containing both strings and role documents: // // [ "readWrite", { "role": "readWrite", "db": "test" } ] // // MongoDB's createUser command accepts the latter. func (roles mongodbRoles) toStandardRolesArray() []interface{} { var standardRolesArray []interface{} for _, role := range roles { if role.DB == "" { standardRolesArray = append(standardRolesArray, role.Role) } else { standardRolesArray = append(standardRolesArray, role) } } return standardRolesArray }