public static Task publishToReadModel(ResolvedEvent eS_Event) { EventFromES normal = NormalizeESEvent(eS_Event); EventDistributor.Publish(normal); return(Task.FromResult(0)); }
public static List <EventFromES> HydrateFromES(string streamId) { var eventStream = connection.ReadStreamEventsForwardAsync(streamId, 0, 256, false).Result.Events; List <EventFromES> theWetList = new List <EventFromES>(); foreach (var eS_Event in eventStream) { EventFromES normalized = NormalizeESEvent(eS_Event); theWetList.Add(normalized); } return(theWetList); }
private static EventFromES NormalizeESEvent(ResolvedEvent eS_Event) { string eventData = System.Text.Encoding.UTF8.GetString(eS_Event.Event.Data); dynamic body = JsonConvert.DeserializeObject <dynamic>(eventData); EventFromES fromES = new EventFromES { StreamId = eS_Event.OriginalStreamId, Id = eS_Event.OriginalStreamId, Data = body, EventType = eS_Event.Event.EventType, TimeStamp = eS_Event.Event.Created.ToString() }; return(fromES); }
public static void Publish(EventFromES anEvent) { dynamic readmodelData; string nspace = "Ops.ReadModels"; var q = from t in Assembly.GetExecutingAssembly().GetTypes() where t.IsClass && t.Namespace == nspace select t; foreach (var readModel in q) { string[] rMName = readModel.Name.ToString().Split("Data"); string[] rMName2 = readModel.Name.ToString().Split("Read"); if (rMName.Length == 1 && rMName2.Length > 1) { try { MethodInfo theMethod = typeof(ReadModels.ReadModel).GetMethod("EventPublish", new[] { typeof(EventFromES) }); string methodName = readModel.Name.ToString(); string nameSpace = readModel.Namespace.ToString(); string key = methodName.Split("Read")[0]; if (Book.book.ContainsKey(key)) { string fullClassName = nameSpace + "." + methodName; object readModelToInvoke = Activator.CreateInstance(Type.GetType(fullClassName)); readmodelData = theMethod.Invoke(readModelToInvoke, new EventFromES[] { anEvent }); } else { Book.book.Add(key, new List <ReadModelData>()); string fullClassName = nameSpace + "." + methodName; object readModelToInvoke = Activator.CreateInstance(Type.GetType(fullClassName)); readmodelData = theMethod.Invoke(readModelToInvoke, new EventFromES[] { anEvent }); } if (key.Split("Table").Length > 1 && readmodelData != null) { TableReadmodelConnection.UpdateTable(readmodelData, key); } } catch (Exception e) { Console.Write(e); } } } }