public static MeetupAggregate CreateMeetup() { var meetup = Aggregate <MeetupId> .Build <MeetupAggregate>(); meetup.Create(MeetupId.From(id), MeetupTitle.From(title)); return(meetup); }
public static async Task <TReadModel> Query <TReadModel, TProjection>(this IEventStoreRepository eventStore, Guid id) where TProjection : IProjection <TReadModel>, new() where TReadModel : new() { var events = await eventStore.GetEventStream <MeetupAggregate, MeetupId>(MeetupId.From(id)); return(new TProjection().Project(new TReadModel(), events.ToArray())); }
public void Given_Invalid_Meetup_When_Build_Then_Throws(MeetupState state) { Assert.Throws <MeetupDomainException>(() => new Meetup( MeetupId.From(id), MeetupTitle.From(title), Address.None, SeatsNumber.From(numberOfSeats), timeRange, state)); }
public void Given_ValidEvents_When_Build_Then_Built() { var id = MeetupId.From(Guid.NewGuid()); var meetup = Aggregate <MeetupId> .Build <MeetupAggregate>( new Events.MeetupCreated(id, "EventSourcing with Marten"), new Events.MeetupNumberOfSeatsUpdated(id, 10), new Events.MeetupLocationUpdated(id, "Barcelona"), new Events.MeetupTimeUpdated(id, DateTime.UtcNow, DateTime.UtcNow.AddHours(2)), new Events.MeetupPublished(id) ); Assert.Equal(id, meetup.Id); }
public void Given_Invalid_EvenStream_When_Build_Then_Throws() { var id = MeetupId.From(Guid.NewGuid()); Assert.Throws <MeetupDomainException>(() => MeetupAggregate.Build( id, new Events.MeetupCreated(id, "EventSourcing with Marten"), new Events.MeetupNumberOfSeatsUpdated(id, 10), new Events.MeetupLocationUpdated(id, "Barcelona"), new Events.MeetupPublished(id), new Events.MeetupTimeUpdated(id, DateTime.UtcNow, DateTime.UtcNow.AddHours(2)) )); }
public void Given_Valid_Created_Meetup_When_Build_Then_Built() { var meetup = new Meetup( MeetupId.From(id), MeetupTitle.From(title), Address.None, SeatsNumber.None, DateTimeRange.None, MeetupState.Created); Assert.Equal(id, meetup.Id); Assert.Equal(title, meetup.Title); Assert.Equal(MeetupState.Created, meetup.State); }
public async Task <Domain.Meetup> Get(Guid id) { var doc = await _meetups .Find <MeetupDocument>(meetup => meetup.Id == id) .FirstOrDefaultAsync(); return(doc != null ? new Domain.Meetup( MeetupId.From(id), MeetupTitle.From(doc.Title), Address.From(doc.Location), SeatsNumber.From(doc.NumberOfSeats), DateTimeRange.From(doc.Start, doc.End), Enum.Parse <MeetupState>(doc.State)) : null); }
public void Given_Valid_Meetup_When_Build_Then_Built(MeetupState state) { var meetup = new Meetup( MeetupId.From(id), MeetupTitle.From(title), Address.From(address), SeatsNumber.From(numberOfSeats), timeRange, state); Assert.Equal(id, meetup.Id); Assert.Equal(title, meetup.Title); Assert.Equal(address, meetup.Location); Assert.Equal(numberOfSeats, meetup.NumberOfSeats); Assert.Equal(timeRange, meetup.TimeRange); Assert.Equal(state, meetup.State); }
public void Given_Invalid_Meetup_When_Build_Then_Throws() { new[] { MeetupState.Published, MeetupState.Canceled, MeetupState.Closed } .ToList().ForEach(state => { Assert.Throws <MeetupDomainException>(() => new Meetup( MeetupId.From(id), MeetupTitle.From(title), Address.None, SeatsNumber.From(numberOfSeats), timeRange, new Dictionary <MemberId, DateTime>(), new Dictionary <MemberId, DateTime>(), state)); }); }
public async Task <MeetupAggregate> Get(Guid meetupId) { var doc = await _collection.Find <MeetupMongoDocument>(doc => doc.Id == meetupId).FirstOrDefaultAsync(); if (doc == null) { return(null); } return(new MeetupAggregate( MeetupId.From(doc.Id), new MeetupTitle(doc.Title), Location.From(doc.Location), NumberOfSeats.From(doc.NumberOfSeats), doc.State.ToLower() switch { "published" => MeetupState.Published, "canceled" => MeetupState.Canceled, "created" => MeetupState.Created, _ => MeetupState.Created },
public async Task <Domain.Meetup> Get(Guid id) { var doc = await _meetups .Find <MeetupDocument>(meetup => meetup.Id == id) .FirstOrDefaultAsync(); return(doc != null ? new Domain.Meetup( MeetupId.From(id), MeetupTitle.From(doc.Title), Address.From(doc.Location), SeatsNumber.From(doc.NumberOfSeats), DateTimeRange.From(doc.Start, doc.End), doc.MembersGoing.ToDictionary(k => MemberId.From(Guid.Parse(k.Key)), v => v.Value), doc.MembersNotGoing.ToDictionary(k => MemberId.From(Guid.Parse(k.Key)), v => v.Value), doc.State.ToLower() switch { "created" => MeetupState.Created, "published" => MeetupState.Published, "closed" => MeetupState.Closed, "canceled" => MeetupState.Canceled, _ => MeetupState.Created, })
public void Given_Valid_Meetup_When_Build_Then_Built() { new[] { MeetupState.Created, MeetupState.Published, MeetupState.Canceled, MeetupState.Closed } .ToList().ForEach(state => { var meetup = new Meetup( MeetupId.From(id), MeetupTitle.From(title), Address.From(address), SeatsNumber.From(numberOfSeats), timeRange, new Dictionary <MemberId, DateTime>(), new Dictionary <MemberId, DateTime>(), state); Assert.Equal(id, meetup.Id); Assert.Equal(title, meetup.Title); Assert.Equal(address, meetup.Location); Assert.Equal(numberOfSeats, meetup.NumberOfSeats); Assert.Equal(timeRange, meetup.TimeRange); Assert.Equal(state, meetup.State); }); }
public static Meetup CreateMeetup() => new Meetup( MeetupId.From(id), MeetupTitle.From(title));
public static MeetupAggregate CreateMeetup() => new MeetupAggregate( MeetupId.From(id), MeetupTitle.From(title));