public AtomicReadModelSignatureFixer(
     IAtomicReadModelFactory atomicReadModelFactory,
     IAtomicCollectionWrapperFactory atomicMongoCollectionWrapperFactory,
     ILiveAtomicReadModelProcessor liveAtomicReadModelProcessor)
 {
     _atomicMongoCollectionWrapperFactory = atomicMongoCollectionWrapperFactory;
     _liveAtomicReadModelProcessor        = liveAtomicReadModelProcessor ?? throw new ArgumentNullException(nameof(liveAtomicReadModelProcessor));
     _atomicReadModelFactory = atomicReadModelFactory;
     _executors = new List <IFixExecutor>();
     Logger     = NullLogger.Instance;
 }
Example #2
0
 public AtomicReadmodelProjectorHelper(
     IAtomicCollectionWrapper <TModel> atomicCollectionWrapper,
     IAtomicReadModelFactory atomicReadModelFactory,
     ILiveAtomicReadModelProcessor liveAtomicReadModelProcessor,
     ILogger logger)
 {
     _atomicCollectionWrapper      = atomicCollectionWrapper;
     _atomicReadmodelInfoAttribute = AtomicReadmodelInfoAttribute.GetFrom(typeof(TModel));
     _logger = logger;
     _atomicReadModelFactory       = atomicReadModelFactory;
     _liveAtomicReadModelProcessor = liveAtomicReadModelProcessor;
 }
#pragma warning disable S1144 // Unused private types or members should be removed
            public ActionExecutor(
                IAtomicReadModelFactory atomicReadModelFactory,
                IAtomicCollectionWrapperFactory atomicCollectionWrapperFactory,
                ILiveAtomicReadModelProcessor liveAtomicReadModelProcessor,
                ILogger logger)
            {
                if (atomicCollectionWrapperFactory == null)
                {
                    throw new ArgumentNullException(nameof(atomicCollectionWrapperFactory));
                }

                _collection = atomicCollectionWrapperFactory.CreateCollectionWrappper <T>();
                _liveAtomicReadModelProcessor = liveAtomicReadModelProcessor ?? throw new ArgumentNullException(nameof(liveAtomicReadModelProcessor));
                _logger = logger;
                _atomicReadModelFactory = atomicReadModelFactory;
            }
        public AtomicMongoCollectionWrapper(
            IMongoDatabase readmodelDb,
            IAtomicReadModelFactory atomicReadModelFactory,
            ILiveAtomicReadModelProcessor liveAtomicReadModelProcessor)
        {
            _liveAtomicReadModelProcessor = liveAtomicReadModelProcessor;

            var collectionName = CollectionNames.GetCollectionName <TModel>();

            _collection = readmodelDb.GetCollection <TModel>(collectionName);

            Logger = NullLogger.Instance;

            //Auto create the basic index you need
            _collection.Indexes.CreateOne(
                new CreateIndexModel <TModel>(
                    Builders <TModel> .IndexKeys
                    .Ascending(_ => _.ProjectedPosition),
                    new CreateIndexOptions()
            {
                Name       = "ProjectedPosition",
                Background = false
            }
                    )
                );

            _collection.Indexes.CreateOne(
                new CreateIndexModel <TModel>(
                    Builders <TModel> .IndexKeys
                    .Ascending(_ => _.ReadModelVersion),
                    new CreateIndexOptions()
            {
                Name       = "ReadModelVersion",
                Background = false
            }
                    )
                );

            _actualVersion = atomicReadModelFactory.GetReamdodelVersion(typeof(TModel));
        }