Exemplo n.º 1
0
        public static void Rebuild(string redisDbUri)
        {
            Argument.ExpectNotNullOrWhiteSpace(() => redisDbUri);

            var readModelAssembly = Assembly.Load(new AssemblyName("ECom.ReadModel"));
            var bus = new Bus.Bus(false);
            var eventStore = new EventStore.Redis.EventStore(redisDbUri, bus);

            var dtoManager = new RedisDtoManager(redisDbUri);

            var dtoTypes = readModelAssembly.GetTypes().Where(t => !t.IsAbstract && typeof(Dto).IsAssignableFrom(t));
            foreach (var dtoType in dtoTypes)
            {
                MethodInfo genericDeleteAll = dtoManager.GetType().GetMethod("DeleteAll").MakeGenericMethod(new[] { dtoType });
                genericDeleteAll.Invoke(dtoManager, new object[0]);
            }

            MessageHandlersRegister.RegisterEventHandlers(new [] { readModelAssembly }, bus, dtoManager);

            var allEvents = eventStore.GetAllEvents();
            foreach (var e in allEvents)
            {
                bus.Publish(e);
            }
        }