public void Remove(SpotCharterId id) { var collection = GetSpotCollection(); var filter = Builders <SpotCharterView> .Filter.Eq("_id", id); collection.DeleteOne(filter); }
void IEventSourceCommandRepository <SpotCharter, SpotCharterId> .Save(SpotCharter instance) { SpotCharterId id = instance.Id; IList <EventInstance> eventStream = this.repository.ContainsKey(id) ? this.repository[id].ToList() : new List <EventInstance>(); IEventSourcedAggregate <SpotCharterId> spotEventsInterface = instance; foreach (var @event in spotEventsInterface.Events) { eventStream.Add(new EventInstance { JsonString = JsonConvert.SerializeObject(@event), Type = @event.GetType() }); } this.repository[id] = eventStream; if (this.dispatcher != null) { foreach (var @event in spotEventsInterface.Events) { this.dispatcher.Publish(new DispatchEvent { EventName = @event.EventName, Source = @event.Source, Timestamp = @event.Timestamp, Version = @event.Version, Payload = JsonConvert.SerializeObject(@event) }); } } }
public void TestNotOperatorOverload() { SpotCharterId spotId1 = null; SpotCharterId spotId2 = null; Assert.True(spotId1 == spotId2); Assert.False(spotId1 != spotId2); Assert.Equal(spotId1, spotId2); spotId1 = new SpotCharterId(Guid.NewGuid()); spotId2 = new SpotCharterId(Guid.NewGuid()); Assert.False(spotId1 == spotId2); Assert.True(spotId1 != spotId2); Assert.NotEqual(spotId1, spotId2); spotId1 = new SpotCharterId(Guid.NewGuid()); spotId2 = null; Assert.False(spotId1 == spotId2); Assert.True(spotId1 != spotId2); Assert.NotEqual(spotId1, spotId2); spotId1 = new SpotCharterId(Guid.Empty); spotId2 = new SpotCharterId(Guid.Empty); Assert.True(spotId1 == spotId2); Assert.False(spotId1 != spotId2); Assert.Equal(spotId1, spotId2); }
public WorkerProcess(IEventConsumer consumer, ISpotCharterCommandRepository source, ISpotCharterUpdateViewRepository destination) { // Define mapping rule between Command and Query models Mapper.Initialize(cfg => { cfg.CreateMap <SpotCharterDomain.ValueObjects.FreightRate, string>().ConstructUsing((rate, ctx) => rate?.ToString() ?? null); cfg.CreateMap <SpotCharter, SpotCharterView>() .AfterMap((src, dest) => { dest.LastUpdate = DateTime.Now; }); }); this.source = source; this.destination = destination; this.consumer = consumer; this.consumer.ReceivedEventHandler += (e) => { try { dynamic eventPayload = JsonConvert.DeserializeObject(e.Payload); var spotId = new SpotCharterId(Guid.Parse(eventPayload.AggregateId.Value.ToString())); // check if last version has been updated already if (!lastVersionsDictionary.Keys.Contains(spotId) || lastVersionsDictionary[spotId] < e.Version) { switch (e.EventName) { case "SpotCharterDeleted": destination.Remove(spotId); Console.WriteLine("Spot {0} removed.", spotId); break; default: var spot = source.Get(spotId); var spotView = Mapper.Map <SpotCharterView>(spot); destination.Save(spotView); lastVersionsDictionary[spotId] = spot.Version; // put the version from the entity, not from the processing event Console.WriteLine("Spot {0} updated to version {1}", spotId, spot.Version); break; } Console.WriteLine("[{3:HH:mm:ss}] Event {0}\tSpot Id {1} Version {2} processed.", e.EventName, spotId, e.Version, DateTime.Now); } else { Console.WriteLine("SpotId : {0} Version {1} already updated. Skipping.", spotId, e.Version); } consumer.AckReceived(e.Id); } catch (Exception ex) { Console.Error.WriteLine(ex); } }; }
public SpotCharterView GetById(SpotCharterId id) { SpotCharterView ret = null; this.repository.TryGetValue(id, out ret); return(ret); }
public SpotCharterView GetById(SpotCharterId id) { var filter = Builders <SpotCharterView> .Filter.Eq("_id", id); var collection = GetSpotCollection(); return(collection.Find(filter).FirstOrDefault()); }
private void Consumer_ReceivedEventHandler(DispatchEvent @event) { dynamic eventPayload = JsonConvert.DeserializeObject(@event.Payload); SpotCharterId spotId = new SpotCharterId(Guid.Parse(eventPayload.AggregateId.Value.ToString())); if (this.commandRepository != null) { this.repository[spotId] = Mapper.Map <SpotCharterView>(this.commandRepository.Get(spotId)); } }
public void TestSpotCharterIdEquality() { var spotId = new SpotCharterId(Guid.NewGuid()); var spotId1 = new SpotCharterId(spotId.Value); Assert.NotEqual(spotId, null); Assert.False(Object.ReferenceEquals(spotId, spotId1)); Assert.Equal(spotId, spotId1); var spotId2 = new SpotCharterId(Guid.NewGuid()); Assert.NotEqual(spotId, spotId2); }
SpotCharter IEventSourceCommandRepository <SpotCharter, SpotCharterId> .Get(SpotCharterId id) { var settings = new Newtonsoft.Json.JsonSerializerSettings() { ContractResolver = new JsonNet.PrivateSettersContractResolvers.PrivateSetterContractResolver() }; if (!this.repository.ContainsKey(id)) { return(null); } var eventStream = this.repository[id]; return(new SpotCharter(eventStream.Select(json => JsonConvert.DeserializeObject(json.JsonString, json.Type, settings) as IEvent <SpotCharterId>).ToArray())); }
public IActionResult Get(string id) { try { var spotId = new SpotCharterId(Guid.Parse(id)); var spot = repository.GetBySpotCharterId(spotId); return(Ok(spot)); } catch (FormatException ex) { return(BadRequest()); } catch (Exception ex) { return(this.StatusCode(500, ex)); } }
private void FillRepositoryWithSampleCharters(int numberOfInstances) { for (int i = 0; i < numberOfInstances; i++) { var spotId = new SpotCharterId(Guid.NewGuid()); this.repository.Add(spotId, new SpotCharterView { BillOfLading = new BillOfLading(DateTime.Now, new CargoQuantity("MT", 45000), null), CharterpartyDate = DateTime.Now, CharterpartyId = new CounterpartyId(Guid.NewGuid()), CharterpartyName = $"Charterparty{i}", Laycan = new DateRange(DateTime.Now, DateTime.Now.AddDays(5)), MinimumQuantity = new CargoQuantity("MT", 40000), VesselId = new VesselId(Guid.NewGuid()), VesselName = $"Vessel{i}", PortfolioId = new PortfolioId(Guid.NewGuid()), PortfolioDescription = $"Portfolio{i}", Version = 1, Id = spotId, LastUpdate = DateTime.Now, DemurrageRate = new DemurrageRate(0, 0, 72, new CostAmount(new Currency("USD", "US Dollars", "$"), 25000), SharedShippingDomainsObjects.Enums.DemurrageRateTimeUnit.Day), }); } }
public void Remove(SpotCharterId id) { this.repository.Remove(id); }
public SpotCharterView GetBySpotCharterId(SpotCharterId spotId) { return(this.GetById(spotId)); }