mongo

package
v1.36.0 Latest Latest
Warning

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

Go to latest
Published: Sep 1, 2021 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const AnyETag = "*"

AnyETag represents the wildchar that corresponds to not check the ETag value for update requests

Variables

This section is empty.

Functions

func QueryPage added in v1.30.0

func QueryPage(ctx context.Context, q *mgo.Query, offset, limit int, result interface{}) (totalCount int, err error)

QueryPage obtains the page of documents defined by the provided offset and limit into the provided slice and closes the iterator. It also provides the total count of documents that would satisfy the provided query without offset or limit.

The result argument must necessarily be the address for a slice. The slice may be nil or previously allocated.

For instance:

var result []struct{ Value int }
q := s.DB(myDatabase).C(myCollection).Find(mySelector)
totalCount, err := queryPage(ctx, q, offset, limit, &result)
if err != nil {
    return err
}

func SafeUpsert added in v1.36.0

func SafeUpsert(b *mgo.Bulk, pairs ...interface{}) (err error)

Types

type Mongo

type Mongo struct {
	CodeListURL string
	Collection  string
	Database    string
	DatasetURL  string
	Session     *mgo.Session
	URI         string
	// contains filtered or unexported fields
}

Mongo represents a simplistic MongoDB configuration.

func (*Mongo) AcquireInstanceLock added in v1.34.0

func (m *Mongo) AcquireInstanceLock(ctx context.Context, instanceID string) (lockID string, err error)

AcquireInstanceLock tries to lock the provided instanceID. If the instance is already locked, this function will block until it's released, at which point we acquire the lock and return.

func (*Mongo) AddEventToInstance

func (m *Mongo) AddEventToInstance(currentInstance *models.Instance, event *models.Event, eTagSelector string) (newETag string, err error)

AddEventToInstance to the instance collection

func (*Mongo) AddInstance

func (m *Mongo) AddInstance(instance *models.Instance) (*models.Instance, error)

AddInstance to the instance collection

func (*Mongo) CheckDatasetExists

func (m *Mongo) CheckDatasetExists(id, state string) error

CheckDatasetExists checks that the dataset exists

func (*Mongo) CheckEditionExists

func (m *Mongo) CheckEditionExists(id, editionID, state string) error

CheckEditionExists checks that the edition of a dataset exists

func (*Mongo) Checker added in v1.22.0

func (m *Mongo) Checker(ctx context.Context, state *healthcheck.CheckState) error

Checker is called by the healthcheck library to check the health state of this mongoDB instance

func (*Mongo) Close added in v1.22.0

func (m *Mongo) Close(ctx context.Context) error

Close represents mongo session closing within the context deadline

func (*Mongo) DeleteDataset

func (m *Mongo) DeleteDataset(id string) (err error)

DeleteDataset deletes an existing dataset document

func (*Mongo) DeleteEdition

func (m *Mongo) DeleteEdition(id string) (err error)

DeleteEdition deletes an existing edition document

func (*Mongo) GetDataset

func (m *Mongo) GetDataset(id string) (*models.DatasetUpdate, error)

GetDataset retrieves a dataset document

func (*Mongo) GetDatasets

func (m *Mongo) GetDatasets(ctx context.Context, offset, limit int, authorised bool) ([]*models.DatasetUpdate, int, error)

GetDatasets retrieves all dataset documents

func (*Mongo) GetDimensionOptions

func (m *Mongo) GetDimensionOptions(ctx context.Context, version *models.Version, dimension string, offset, limit int) ([]*models.PublicDimensionOption, int, error)

GetDimensionOptions returns dimension options for a dimensions within a dataset, according to the provided limit and offest. Offset and limit need to be positive or zero

func (*Mongo) GetDimensionOptionsFromIDs added in v1.25.0

func (m *Mongo) GetDimensionOptionsFromIDs(version *models.Version, dimension string, IDs []string) ([]*models.PublicDimensionOption, int, error)

GetDimensionOptionsFromIDs returns dimension options for a dimension within a dataset, whose IDs match the provided list of IDs

func (*Mongo) GetDimensions

func (m *Mongo) GetDimensions(datasetID, versionID string) ([]bson.M, error)

GetDimensions returns a list of all dimensions from a dataset

func (*Mongo) GetDimensionsFromInstance

func (m *Mongo) GetDimensionsFromInstance(ctx context.Context, id string, offset, limit int) ([]*models.DimensionOption, int, error)

GetDimensionsFromInstance returns a list of dimensions and their options for an instance resource. Note that all dimension options for all dimensions are returned as high level items, hence there can be duplicate dimension names, which correspond to different options.

func (*Mongo) GetEdition

func (m *Mongo) GetEdition(id, editionID, state string) (*models.EditionUpdate, error)

GetEdition retrieves an edition document for a dataset

func (*Mongo) GetEditions

func (m *Mongo) GetEditions(ctx context.Context, id, state string, offset, limit int, authorised bool) ([]*models.EditionUpdate, int, error)

GetEditions retrieves all edition documents for a dataset

func (*Mongo) GetInstance

func (m *Mongo) GetInstance(ID, eTagSelector string) (*models.Instance, error)

GetInstance returns a single instance from an ID

func (*Mongo) GetInstances

func (m *Mongo) GetInstances(ctx context.Context, states []string, datasets []string, offset, limit int) ([]*models.Instance, int, error)

GetInstances from a mongo collection

func (*Mongo) GetNextVersion

func (m *Mongo) GetNextVersion(datasetID, edition string) (int, error)

GetNextVersion retrieves the latest version for an edition of a dataset

func (*Mongo) GetUniqueDimensionAndOptions

func (m *Mongo) GetUniqueDimensionAndOptions(ctx context.Context, id, dimension string, offset, limit int) ([]*string, int, error)

GetUniqueDimensionAndOptions returns a list of dimension options for an instance resource

func (*Mongo) GetVersion

func (m *Mongo) GetVersion(id, editionID string, versionID int, state string) (*models.Version, error)

GetVersion retrieves a version document for a dataset edition

func (*Mongo) GetVersions

func (m *Mongo) GetVersions(ctx context.Context, datasetID, editionID, state string, offset, limit int) ([]models.Version, int, error)

GetVersions retrieves all version documents for a dataset edition

func (*Mongo) Init

func (m *Mongo) Init(ctx context.Context) (err error)

Init creates a new mgo.Session with a strong consistency and a write mode of "majortiy"; and initialises the mongo health client.

func (*Mongo) Ping

func (m *Mongo) Ping(ctx context.Context) (time.Time, error)

Ping the mongodb database

func (*Mongo) UnlockInstance added in v1.34.0

func (m *Mongo) UnlockInstance(lockID string)

UnlockInstance releases an exclusive mongoDB lock for the provided lockId (if it exists)

func (*Mongo) UpdateBuildHierarchyTaskState

func (m *Mongo) UpdateBuildHierarchyTaskState(currentInstance *models.Instance, dimension, state, eTagSelector string) (newETag string, err error)

UpdateBuildHierarchyTaskState updates the state of a build hierarchy task.

func (*Mongo) UpdateBuildSearchTaskState

func (m *Mongo) UpdateBuildSearchTaskState(currentInstance *models.Instance, dimension, state, eTagSelector string) (newETag string, err error)

UpdateBuildSearchTaskState updates the state of a build search task.

func (*Mongo) UpdateDataset

func (m *Mongo) UpdateDataset(ctx context.Context, id string, dataset *models.Dataset, currentState string) (err error)

UpdateDataset updates an existing dataset document

func (*Mongo) UpdateDatasetWithAssociation

func (m *Mongo) UpdateDatasetWithAssociation(id, state string, version *models.Version) (err error)

UpdateDatasetWithAssociation updates an existing dataset document with collection data

func (*Mongo) UpdateDimensionNodeIDAndOrder added in v1.28.0

func (m *Mongo) UpdateDimensionNodeIDAndOrder(dimension *models.DimensionOption) error

UpdateDimensionNodeIDAndOrder to cache the id and order (optional) for other import processes

func (*Mongo) UpdateETagForNodeIDAndOrder added in v1.34.0

func (m *Mongo) UpdateETagForNodeIDAndOrder(currentInstance *models.Instance, nodeID string, order *int, eTagSelector string) (newETag string, err error)

func (*Mongo) UpdateETagForOptions added in v1.34.0

func (m *Mongo) UpdateETagForOptions(currentInstance *models.Instance, options []*models.CachedDimensionOption, eTagSelector string) (newETag string, err error)

UpdateETagForOptions updates the eTag value for an instance according to the provided dimension options

func (*Mongo) UpdateImportObservationsTaskState

func (m *Mongo) UpdateImportObservationsTaskState(currentInstance *models.Instance, state, eTagSelector string) (newETag string, err error)

UpdateImportObservationsTaskState to the given state.

func (*Mongo) UpdateInstance

func (m *Mongo) UpdateInstance(ctx context.Context, currentInstance, updatedInstance *models.Instance, eTagSelector string) (newETag string, err error)

UpdateInstance with new properties

func (*Mongo) UpdateObservationInserted

func (m *Mongo) UpdateObservationInserted(currentInstance *models.Instance, observationInserted int64, eTagSelector string) (newETag string, err error)

UpdateObservationInserted by incrementing the stored value

func (*Mongo) UpdateVersion

func (m *Mongo) UpdateVersion(id string, version *models.Version) (err error)

UpdateVersion updates an existing version document

func (*Mongo) UpsertContact

func (m *Mongo) UpsertContact(id string, update interface{}) (err error)

UpsertContact adds or overides an existing contact document

func (*Mongo) UpsertDataset

func (m *Mongo) UpsertDataset(id string, datasetDoc *models.DatasetUpdate) (err error)

UpsertDataset adds or overides an existing dataset document

func (*Mongo) UpsertDimensionsToInstance added in v1.36.0

func (m *Mongo) UpsertDimensionsToInstance(opts []*models.CachedDimensionOption) error

UpsertDimensionsToInstance to the dimension collection

func (*Mongo) UpsertEdition

func (m *Mongo) UpsertEdition(datasetID, edition string, editionDoc *models.EditionUpdate) (err error)

UpsertEdition adds or overides an existing edition document

func (*Mongo) UpsertVersion

func (m *Mongo) UpsertVersion(id string, version *models.Version) (err error)

UpsertVersion adds or overrides an existing version document

Jump to

Keyboard shortcuts

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