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); } }