示例#1
0
        public void AggregateCount()
        {
            var q = new SqlQuerySpec("select count(1) from c where c.entity = @entity and c.artificialIq > @iq",
                                     new SqlParameterCollection
            {
                new SqlParameter("@entity", Robot.Entity),
                new SqlParameter("@iq", 120)
            });

            var result = _aggregate.Get(q);

            Assert.AreEqual(_robots.Count(x => x.ArtificialIq > 120), result);
        }
        public Handlers(AggregateRepository repository)
        {
            Register <AdmitPatient>(async c =>
            {
                var encounter = new Encounter(c.PatientId, c.PatientName, c.AgeInYears, c.WardNumber);
                await repository.Save(encounter);
            });

            Register <TransferPatient>(async c =>
            {
                var encounter = await repository.Get <Encounter>(c.PatientId);
                encounter.Transfer(c.WardNumber);
                await repository.Save(encounter);
            });

            Register <DischargePatient>(async c =>
            {
                var encounter = await repository.Get <Encounter>(c.PatientId);
                encounter.DischargePatient();
                await repository.Save(encounter);
            });
        }
示例#3
0
        public async Task AggregateRepository_get_restores_correct_state()
        {
            var aggregateId = _aggregateId;
            var eventStore  = new EventStore();
            var eventStream = new EventStream(aggregateId, AggregateRoot.InitialVersion + 1, GenerateRandomizedEvents(_numberOfEvents).ToArray());

            eventStore.EventStreams.Add(eventStream);

            var AggregateRepository = new AggregateRepository(eventStore, new AggregateFactory(GetLogger <Aggregate>()), GetLogger <AggregateRepository>());

            var aggregate = await AggregateRepository.Get <Aggregate>(aggregateId);

            Assert.Equal(_numberOfEvents, aggregate.Version + 1);
            Assert.Equal(aggregateId, aggregate.Id);
        }
        public Handlers(AggregateRepository repository)
        {
            Register <RegisterUserCommand>(async c =>
            {
                var user = new User(c.UserID, c.FirstName, c.LastName, c.PhoneNumber, c.EmailAddress, c.Password);
                await repository.Save(user);
            });

            Register <ChangePasswordCommand>(async c =>
            {
                var user = await repository.Get <User>(c.UserID);
                user.ChangePassword(c.Password);
                await repository.Save(user);
            });
        }