Documentation
¶
Index ¶
- Constants
- func QueryPage(ctx context.Context, q *mgo.Query, offset, limit int, result interface{}) (totalCount int, err error)
- func SafeUpsert(b *mgo.Bulk, pairs ...interface{}) (err error)
- type Mongo
- func (m *Mongo) AcquireInstanceLock(ctx context.Context, instanceID string) (lockID string, err error)
- func (m *Mongo) AddEventToInstance(currentInstance *models.Instance, event *models.Event, eTagSelector string) (newETag string, err error)
- func (m *Mongo) AddInstance(instance *models.Instance) (*models.Instance, error)
- func (m *Mongo) CheckDatasetExists(id, state string) error
- func (m *Mongo) CheckEditionExists(id, editionID, state string) error
- func (m *Mongo) Checker(ctx context.Context, state *healthcheck.CheckState) error
- func (m *Mongo) Close(ctx context.Context) error
- func (m *Mongo) DeleteDataset(id string) (err error)
- func (m *Mongo) DeleteEdition(id string) (err error)
- func (m *Mongo) GetDataset(id string) (*models.DatasetUpdate, error)
- func (m *Mongo) GetDatasets(ctx context.Context, offset, limit int, authorised bool) ([]*models.DatasetUpdate, int, error)
- func (m *Mongo) GetDimensionOptions(ctx context.Context, version *models.Version, dimension string, ...) ([]*models.PublicDimensionOption, int, error)
- func (m *Mongo) GetDimensionOptionsFromIDs(version *models.Version, dimension string, IDs []string) ([]*models.PublicDimensionOption, int, error)
- func (m *Mongo) GetDimensions(datasetID, versionID string) ([]bson.M, error)
- func (m *Mongo) GetDimensionsFromInstance(ctx context.Context, id string, offset, limit int) ([]*models.DimensionOption, int, error)
- func (m *Mongo) GetEdition(id, editionID, state string) (*models.EditionUpdate, error)
- func (m *Mongo) GetEditions(ctx context.Context, id, state string, offset, limit int, authorised bool) ([]*models.EditionUpdate, int, error)
- func (m *Mongo) GetInstance(ID, eTagSelector string) (*models.Instance, error)
- func (m *Mongo) GetInstances(ctx context.Context, states []string, datasets []string, offset, limit int) ([]*models.Instance, int, error)
- func (m *Mongo) GetNextVersion(datasetID, edition string) (int, error)
- func (m *Mongo) GetUniqueDimensionAndOptions(ctx context.Context, id, dimension string, offset, limit int) ([]*string, int, error)
- func (m *Mongo) GetVersion(id, editionID string, versionID int, state string) (*models.Version, error)
- func (m *Mongo) GetVersions(ctx context.Context, datasetID, editionID, state string, offset, limit int) ([]models.Version, int, error)
- func (m *Mongo) Init(ctx context.Context) (err error)
- func (m *Mongo) Ping(ctx context.Context) (time.Time, error)
- func (m *Mongo) UnlockInstance(lockID string)
- func (m *Mongo) UpdateBuildHierarchyTaskState(currentInstance *models.Instance, dimension, state, eTagSelector string) (newETag string, err error)
- func (m *Mongo) UpdateBuildSearchTaskState(currentInstance *models.Instance, dimension, state, eTagSelector string) (newETag string, err error)
- func (m *Mongo) UpdateDataset(ctx context.Context, id string, dataset *models.Dataset, currentState string) (err error)
- func (m *Mongo) UpdateDatasetWithAssociation(id, state string, version *models.Version) (err error)
- func (m *Mongo) UpdateDimensionNodeIDAndOrder(dimension *models.DimensionOption) error
- func (m *Mongo) UpdateETagForNodeIDAndOrder(currentInstance *models.Instance, nodeID string, order *int, ...) (newETag string, err error)
- func (m *Mongo) UpdateETagForOptions(currentInstance *models.Instance, options []*models.CachedDimensionOption, ...) (newETag string, err error)
- func (m *Mongo) UpdateImportObservationsTaskState(currentInstance *models.Instance, state, eTagSelector string) (newETag string, err error)
- func (m *Mongo) UpdateInstance(ctx context.Context, currentInstance, updatedInstance *models.Instance, ...) (newETag string, err error)
- func (m *Mongo) UpdateObservationInserted(currentInstance *models.Instance, observationInserted int64, ...) (newETag string, err error)
- func (m *Mongo) UpdateVersion(id string, version *models.Version) (err error)
- func (m *Mongo) UpsertContact(id string, update interface{}) (err error)
- func (m *Mongo) UpsertDataset(id string, datasetDoc *models.DatasetUpdate) (err error)
- func (m *Mongo) UpsertDimensionsToInstance(opts []*models.CachedDimensionOption) error
- func (m *Mongo) UpsertEdition(datasetID, edition string, editionDoc *models.EditionUpdate) (err error)
- func (m *Mongo) UpsertVersion(id string, version *models.Version) (err error)
Constants ¶
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
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 ¶
AddInstance to the instance collection
func (*Mongo) CheckDatasetExists ¶
CheckDatasetExists checks that the dataset exists
func (*Mongo) CheckEditionExists ¶
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
Close represents mongo session closing within the context deadline
func (*Mongo) DeleteDataset ¶
DeleteDataset deletes an existing dataset document
func (*Mongo) DeleteEdition ¶
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 ¶
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 ¶
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 ¶
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 ¶
Init creates a new mgo.Session with a strong consistency and a write mode of "majortiy"; and initialises the mongo health client.
func (*Mongo) UnlockInstance ¶ added in v1.34.0
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 ¶
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 (*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 ¶
UpdateVersion updates an existing version document
func (*Mongo) UpsertContact ¶
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