Esempio n. 1
0
        public CqrsReader(IDatabaseApi api, CrudModels <M> crudModels)
        {
            this.api        = api;
            this.crudModels = crudModels;

            // Subscribing to event handler
            CqrsEventHandler <M> .Subscribe(cqrsEvent =>
            {
                if (cqrsEvent.EventType.Equals(ECqrsEventType.CreateEvent))
                {
                    // When the CqrsWriter has added a model through THEIR database, we add it in OUR database.
                    api.OpenConnection();
                    api.Create(new List <M>()
                    {
                        (M)cqrsEvent.Model
                    }, crudModels.CreateModel);
                    api.CloseConnection();
                }
                else if (cqrsEvent.EventType.Equals(ECqrsEventType.DeleteEvent))
                {
                    // When the CqrsWriter has removed a model from THEIR database, we remove it from OUR database.
                    api.OpenConnection();
                    api.Delete <M>(new List <M>()
                    {
                        (M)cqrsEvent.Model
                    }, crudModels.DeleteModel);
                    api.CloseConnection();
                }
            });
        }
        public void Update <M>(List <M> modelsWithNewValues) where M : class, IModel, new()
        {
            api.Update(modelsWithNewValues, this.crudModels.UpdateModel);

            foreach (var model in modelsWithNewValues)
            {
                var eventForUpdatedModel = new CqrsEvent <M>(ECqrsEventType.UpdateEvent, model);
                CqrsEventHandler <M> .AddEvent(eventForUpdatedModel);
            }
        }
        public void Delete(List <M> modelsToDelete)
        {
            api.Delete(modelsToDelete, crudModels.DeleteModel);

            foreach (var deletedModel in modelsToDelete)
            {
                var eventForDeletedModel = new CqrsEvent <M>(ECqrsEventType.DeleteEvent, deletedModel);
                CqrsEventHandler <M> .AddEvent(eventForDeletedModel);
            }
        }
        public void Create(List <M> newModels)
        {
            api.Create(newModels, crudModels.CreateModel);

            foreach (var newModel in newModels)
            {
                var eventForNewModel = new CqrsEvent <M>(ECqrsEventType.CreateEvent, newModel);
                CqrsEventHandler <M> .AddEvent(eventForNewModel);
            }
        }