public async Task ProcessStreamItem(StreamSubmarket submarket) { StreamSubmarket currentSubmarket = null; bool found = _submarkets.TryGetValue(submarket.Id, out currentSubmarket); switch (submarket.Operation) { case StreamOperation.Insert: case StreamOperation.Update: if (!found || currentSubmarket.Compare(submarket) != 0) { if (_persistenceLayer != null) { await _persistenceLayer.ProcessStreamItem(submarket); } } _submarkets[submarket.Id] = submarket; break; case StreamOperation.Delete: if (found) { if (_persistenceLayer != null) { await _persistenceLayer.ProcessStreamItem(submarket); } _submarkets.TryRemove(submarket.Id, out currentSubmarket); } break; default: break; } }
private async Task InsertSubmarket(StreamSubmarket submarket) { var CallSPCmd = new SqlCommand(); await DoSqlCmd(CallSPCmd, () => { var Id = int.Parse(submarket.Id.Split('-')[1]); var MarketId = int.Parse(submarket.MarketId.Split(':')[1]); CallSPCmd.CommandText = "exec InsertSubmarket @Id, @MarketId, @Name, @Timestamp"; CallSPCmd.Parameters.Add("@Id", SqlDbType.Int).Value = Id; CallSPCmd.Parameters.Add("@MarketId", SqlDbType.Int).Value = MarketId; CallSPCmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = submarket.Name; CallSPCmd.Parameters.Add("@Timestamp", SqlDbType.DateTime).Value = submarket.Date; }); }
public virtual Task SubmarketUpdated(StreamSubmarket streamItem) { return(Task.CompletedTask); }
public override Task SubmarketUpdated(StreamSubmarket streamItem) { return(_dataLayer.ProcessStreamItem(streamItem)); }