mongodb

package
v0.2.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 7, 2023 License: MIT Imports: 26 Imported by: 0

Documentation

Overview

Package mongodb provides a MongoDB implementation of the storage interface.

Index

Constants

View Source
const Name = "mongodb"

Name of the storage.

Variables

This section is empty.

Functions

func Get

func Get() storage.IStorage

Get returns a setup MongoDB, or set it up.

func Set

func Set(s storage.IStorage)

Set sets the storage, primarily used for testing.

func ToMongoString

func ToMongoString(s customsort.Sort) (bson.D, error)

ToMongoString converts the `Sort` to MongoDB sort format.

Types

type Config

type Config = options.ClientOptions

Config is the MongoDB configuration.

type MongoDB

type MongoDB struct {
	*storage.Storage

	// Client is the MongoDB client.
	Client *mongo.Client `json:"-" validate:"required"`

	// Config is the MongoDB configuration.
	Config *Config `json:"-"`

	// Database to connect to.
	Database string `json:"database" validate:"required"`

	// Target allows to set a static target. If it is empty, the target will be
	// dynamic - the one set at the operation (count, create, delete, etc) time.
	// Depending on the storage, target is a collection, a table, a bucket, etc.
	// For ElasticSearch, for example it doesn't have a concept of a database -
	// the target then is the index. Due to different cases of ElasticSearch
	// usage, the target can be static or dynamic - defined at the index time,
	// for example: log-{YYYY}-{MM}. For Redis, it isn't used at all.
	Target string `json:"-" validate:"omitempty,gt=0"`
}

MongoDB storage definition.

func New

func New(ctx context.Context, db string, cfg *Config) (*MongoDB, error)

New creates a new MongoDB storage.

func (*MongoDB) Count

func (m *MongoDB) Count(ctx context.Context, target string, prm *count.Count, options ...storage.Func[*count.Count]) (int64, error)

Count returns the number of items in the storage.

func (*MongoDB) Create added in v0.0.15

func (m *MongoDB) Create(ctx context.Context, id, target string, v any, prm *create.Create, options ...storage.Func[*create.Create]) (string, error)

Create data.

NOTE: Not all storages returns the ID, neither all storages requires `id` to be set.

WARN: MongoDB relies on the model (`v`) `_id` field to be set, otherwise it will generate a new one. IT'S UP TO THE DEVELOPER TO SET THE `_ID` FIELD.

func (*MongoDB) Delete

func (m *MongoDB) Delete(ctx context.Context, id, target string, prm *delete.Delete, options ...storage.Func[*delete.Delete]) error

Delete removes data.

func (*MongoDB) GetClient

func (m *MongoDB) GetClient() any

GetClient returns the client.

func (*MongoDB) List

func (m *MongoDB) List(ctx context.Context, target string, v any, prm *list.List, opts ...storage.Func[*list.List]) error

List data.

WARN: In general, projections that include non-indexed fields or fields that are part of a covered index (i.e., an index that includes all the projected fields) are less likely to impact performance.

NOTE: It uses param.List.Search to query the data.

func (*MongoDB) Retrieve added in v0.0.15

func (m *MongoDB) Retrieve(ctx context.Context, id, target string, v any, prm *retrieve.Retrieve, options ...storage.Func[*retrieve.Retrieve]) error

Retrieve data.

func (*MongoDB) Update

func (m *MongoDB) Update(ctx context.Context, id, target string, v any, prm *update.Update, opts ...storage.Func[*update.Update]) error

Update data.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL