internal static void PlayEvent(DomainEventBase e) { switch (e) { case PlayerCreatedEvent playerCreated: ((ICache <Player>)PlayerCache).AddNew(Player.HandleEvent(playerCreated)); break; case MarkObtainedEvent markObtained: PlayerCache[markObtained.Guid].HandleEvent(markObtained); break; } }
public void Store(DomainEventBase e) { // LAST_INSERT_ID() is not thread safe MySqlCommand command = new MySqlCommand( @"INSERT INTO events(guid, occured, recorded, data) VALUES(?guid, ?occured, ?recorded, ?data); SELECT LAST_INSERT_ID();", Connection); command.Parameters.AddWithValue("guid", e.Guid); command.Parameters.AddWithValue("occured", e.Occured); command.Parameters.AddWithValue("recorded", e.Recorded); string jsonData = JsonConvert.SerializeObject(e, JsonSettings); command.Parameters.AddWithValue("data", jsonData); e.SetNumber((ulong)command.ExecuteScalar()); }
public void Replay(DomainEventBase e) { EventStored?.Invoke(this, new EventStoredArgs(e)); }
public EventStoredArgs(DomainEventBase @event) { Event = @event; }