public async Task SavePositionAsync(EventPosition commitPosition) { try { var filter = Builders <NoSqlPosition> .Filter.Empty; var documentsResult = await this._documentUnitOfWork.NoSqlPositionRepository.FindAsync(filter); if (!documentsResult.Any()) { var noSqlDocument = NoSqlPosition.CreateNoSqlPosition(commitPosition.CommitPosition); await this._documentUnitOfWork.NoSqlPositionRepository.InsertOneAsync(noSqlDocument); } else { var noSqlDocument = documentsResult.First(); var updateCommand = noSqlDocument.UpdatePosition(commitPosition.CommitPosition); var filterUpdate = Builders <NoSqlPosition> .Filter.Eq("_id", noSqlDocument.Id); await this._documentUnitOfWork.NoSqlPositionRepository.UpdateOneAsync(filterUpdate, updateCommand); } } catch (Exception ex) { throw new Exception(CommonServices.GetErrorMessage(ex)); } }
public async Task SaveLastPositionAsync(EventStorePosition position) { try { var filter = Builders <NoSqlPosition> .Filter.Empty; var documentResults = await this._documentUnitOfWork.NoSqlPositionRepository.FindAsync(filter); if (!documentResults.Any()) { var noSqlDocument = NoSqlPosition.CreateNoSqlPosition(position); await this._documentUnitOfWork.NoSqlPositionRepository.InsertOneAsync(noSqlDocument); } else { if (position.CommitPosition > documentResults.First().LastPosition.CommitPosition) { var update = documentResults.First().UpdateLastPostion(position); filter = Builders <NoSqlPosition> .Filter.Eq("_id", documentResults.First().Id); await this._documentUnitOfWork.NoSqlPositionRepository.UpdateOneAsync(filter, update); } } } catch (Exception e) { Console.WriteLine(e); throw; } }