manipulate: Index | Files | Directories

package manipmongo

import ""

Package manipmongo provides a MongoDB backed TransactionalManipulator.


Package Files

doc.go helpers.go manipulator.go options.go retryinfo.go sharder.go utils.go

func CompileFilter Uses

func CompileFilter(f *elemental.Filter) bson.M

CompileFilter compiles the given manipulate filter into a raw mongo filter.

func ContextOptionUpsert Uses

func ContextOptionUpsert(operations bson.M) manipulate.ContextOption

ContextOptionUpsert tells to use upsert for an Create operation. The given operation will be executed for the upsert command. You cannot use "$set" which is always set to be the identifier. If you do so, ContextOptionUpsert will panic. If you use $setOnInsert, you must not set _id. If you do so, it will panic.

func CreateCollection Uses

func CreateCollection(manipulator manipulate.Manipulator, identity elemental.Identity, info *mgo.CollectionInfo) error

CreateCollection creates a collection using the given mgo.CollectionInfo.

func CreateIndex Uses

func CreateIndex(manipulator manipulate.Manipulator, identity elemental.Identity, indexes ...mgo.Index) error

CreateIndex creates multiple mgo.Index for the collection storing info for the given identity using the given manipulator.

func DeleteIndex Uses

func DeleteIndex(manipulator manipulate.Manipulator, identity elemental.Identity, indexes ...string) error

DeleteIndex deletes multiple mgo.Index for the collection.

func DoesDatabaseExist Uses

func DoesDatabaseExist(manipulator manipulate.Manipulator) (bool, error)

DoesDatabaseExist checks if the database used by the given manipulator exists.

func DropDatabase Uses

func DropDatabase(manipulator manipulate.Manipulator) error

DropDatabase drops the entire database used by the given manipulator.

func EnsureIndex Uses

func EnsureIndex(manipulator manipulate.Manipulator, identity elemental.Identity, indexes ...mgo.Index) error

EnsureIndex works like create index, but it will delete existing index if they changed before creating a new one.

func GetAttributeEncrypter Uses

func GetAttributeEncrypter(manipulator manipulate.Manipulator) elemental.AttributeEncrypter

GetAttributeEncrypter returns the attribute encrypter of the given mongo manipulator..

func GetDatabase Uses

func GetDatabase(manipulator manipulate.Manipulator) (*mgo.Database, func(), error)

GetDatabase returns a ready to use mgo.Database. Use at your own risks. You are responsible for closing the session by calling the returner close function

func New Uses

func New(url string, db string, options ...Option) (manipulate.TransactionalManipulator, error)

New returns a new manipulator backed by MongoDB.

func RunQuery Uses

func RunQuery(mctx manipulate.Context, operationFunc func() (interface{}, error), baseRetryInfo RetryInfo) (interface{}, error)

RunQuery runs a function that must run a mongodb operation. It will retry in case of failure. This is an advanced helper can be used when you get a session from using GetDatabase().

func SetAttributeEncrypter Uses

func SetAttributeEncrypter(manipulator manipulate.Manipulator, enc elemental.AttributeEncrypter)

SetAttributeEncrypter switch the attribute encrypter of the given mongo manipulator. This is only useful in some rare cases like miugration, and it is not go routine safe.

func SetConsistencyMode Uses

func SetConsistencyMode(manipulator manipulate.Manipulator, mode mgo.Mode, refresh bool)

SetConsistencyMode sets the mongo consistency mode of the mongo session.

type Option Uses

type Option func(*config)

An Option represents a maniphttp.Manipulator option.

func OptionAttributeEncrypter Uses

func OptionAttributeEncrypter(enc elemental.AttributeEncrypter) Option

OptionAttributeEncrypter allows to set an elemental.AttributeEncrypter to use to encrypt/decrypt elemental.AttributeEncryptable.

func OptionConnectionPoolLimit Uses

func OptionConnectionPoolLimit(poolLimit int) Option

OptionConnectionPoolLimit sets maximum size of the connection pool.

func OptionConnectionTimeout Uses

func OptionConnectionTimeout(connectTimeout time.Duration) Option

OptionConnectionTimeout sets the connection timeout.

func OptionCredentials Uses

func OptionCredentials(username, password, authsource string) Option

OptionCredentials sets the username and password to use for authentication.

func OptionDefaultReadConsistencyMode Uses

func OptionDefaultReadConsistencyMode(consistency manipulate.ReadConsistency) Option

OptionDefaultReadConsistencyMode sets the default read consistency mode.

func OptionDefaultRetryFunc Uses

func OptionDefaultRetryFunc(f manipulate.RetryFunc) Option

OptionDefaultRetryFunc sets the default retry func to use if manipulate.Context does not have one.

func OptionDefaultWriteConsistencyMode Uses

func OptionDefaultWriteConsistencyMode(consistency manipulate.WriteConsistency) Option

OptionDefaultWriteConsistencyMode sets the default write consistency mode.

func OptionExplain Uses

func OptionExplain(explain map[elemental.Identity]map[elemental.Operation]struct{}) Option

OptionExplain allows to tell manipmongo to explain the query before it runs it for the given identities on the given operations. For example, consider passing:

        model.ThisIndentity: []elemental.Operation{elemental.OperationRetrieveMany, elemental.OperationCreate},
        model.ThatIndentity: []elemental.Operation{}, // or nil

This would trigger explanation on retrieveMany and create for model.ThisIndentity
and every operation on model.ThatIndentity.

func OptionForceReadFilter Uses

func OptionForceReadFilter(f bson.M) Option

OptionForceReadFilter allows to set a bson.M filter that will always reducing the scope of the reads to that filter.

func OptionSharder Uses

func OptionSharder(sharder Sharder) Option

OptionSharder sets the sharder.

func OptionSocketTimeout Uses

func OptionSocketTimeout(socketTimeout time.Duration) Option

OptionSocketTimeout sets the socket timeout.

func OptionTLS Uses

func OptionTLS(tlsConfig *tls.Config) Option

OptionTLS sets the tls configuration for the connection.

type RetryInfo Uses

type RetryInfo struct {
    Operation elemental.Operation
    Identity  elemental.Identity
    // contains filtered or unexported fields

A RetryInfo contains information about a retry,

func (RetryInfo) Context Uses

func (i RetryInfo) Context() manipulate.Context

Context returns the manipulate.Context used.

func (RetryInfo) Err Uses

func (i RetryInfo) Err() error

Err returns the error that caused the retry.

func (RetryInfo) Try Uses

func (i RetryInfo) Try() int

Try returns the try number.

type Sharder Uses

type Sharder interface {

    // Shard will be call when the shard key needs to be set to
    // the given elemental.Identifiable.
    Shard(manipulate.TransactionalManipulator, manipulate.Context, elemental.Identifiable) error

    // OnShardedWrite will be called after a successful sharded write
    // If it returns an error, this error will be returned to the caller
    // of the manipulate Operation, but the object that has been
    // created will still be created in database.
    OnShardedWrite(manipulate.TransactionalManipulator, manipulate.Context, elemental.Operation, elemental.Identifiable) error

    // FilterOne returns the filter bit as bson.M that must be
    // used to perform an efficient localized query for a single object.
    // You can return nil which will trigger a broadcast.
    FilterOne(manipulate.TransactionalManipulator, manipulate.Context, elemental.Identifiable) (bson.M, error)

    // FilterMany returns the filter bit as bson.M that must be
    // used to perform an efficient localized query for multiple objects.
    // You can return nil which will trigger a broadcast.
    FilterMany(manipulate.TransactionalManipulator, manipulate.Context, elemental.Identity) (bson.M, error)

A Sharder is the interface of an object that can be use to manage sharding of resources.



Package manipmongo imports 18 packages (graph). Updated 2019-11-14. Refresh now. Tools for package owners.