public MongoPersistenceEngine( IMongoDatabase store, IDocumentSerializer serializer, MongoPersistenceOptions options) { _store = store ?? throw new ArgumentNullException(nameof(store)); _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer)); _options = options ?? throw new ArgumentNullException(nameof(options)); _systemBucketName = options.SystemBucketName; // set config options _commitSettings = _options.GetCommitSettings(); _snapshotSettings = _options.GetSnapshotSettings(); _streamSettings = _options.GetStreamSettings(); _insertCommitWriteConcern = _options.GetInsertCommitWriteConcern(); }
public MongoPersistenceEngine(MongoDatabase store, IDocumentSerializer serializer, MongoPersistenceOptions options) { if (store == null) { throw new ArgumentNullException("store"); } if (serializer == null) { throw new ArgumentNullException("serializer"); } if (options == null) { throw new ArgumentNullException("options"); } _store = store; _serializer = serializer; _options = options; // set config options _commitSettings = _options.GetCommitSettings(); _snapshotSettings = _options.GetSnapshotSettings(); _streamSettings = _options.GetStreamSettings(); _insertCommitWriteConcern = _options.GetInsertCommitWriteConcern(); _getLastCheckPointNumber = () => TryMongo(() => { var max = PersistedCommits .FindAll() .SetFields(Fields.Include(MongoCommitFields.CheckpointNumber)) .SetSortOrder(SortBy.Descending(MongoCommitFields.CheckpointNumber)) .SetLimit(1) .FirstOrDefault(); return(max != null ? max[MongoCommitFields.CheckpointNumber].AsInt64 : 0L); }); _getNextCheckpointNumber = () => new LongCheckpoint(_getLastCheckPointNumber() + 1L); _updateScript = new BsonJavaScript("function (x){ return insertCommit(x);}"); _checkpointZero = new LongCheckpoint(0); }
public MongoPersistenceEngine( IMongoDatabase store, IDocumentSerializer serializer, MongoPersistenceOptions options) { var db = store ?? throw new ArgumentNullException(nameof(store)); _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer)); _options = options ?? throw new ArgumentNullException(nameof(options)); _systemBucketName = options.SystemBucketName; // set config options var _commitSettings = _options.GetCommitSettings(); var _snapshotSettings = _options.GetSnapshotSettings(); var _streamSettings = _options.GetStreamSettings(); var _insertCommitWriteConcern = _options.GetInsertCommitWriteConcern(); // from the docs: IMongoCollection is thread safe and safe to be stored globally PersistedCommits = db.GetCollection <BsonDocument>("Commits", _commitSettings).WithWriteConcern(_insertCommitWriteConcern); PersistedStreamHeads = db.GetCollection <BsonDocument>("Streams", _streamSettings); PersistedSnapshots = db.GetCollection <BsonDocument>("Snapshots", _snapshotSettings); }