private void SqlTableDependencyOnChanged(object sender, RecordChangedEventArgs <TEntity> eventArgs)
        {
            var entity = eventArgs.Entity;

            switch (eventArgs.ChangeType)
            {
            case ChangeType.Insert:
                OnInserted(entity);
                break;

            case ChangeType.Update:
                OnUpdated(entity, eventArgs.EntityOldValues);
                break;

            case ChangeType.Delete:
                OnDeleted(entity);
                break;
            }

            var recordChangedNotification = new RecordChangedNotification <TEntity>()
            {
                Entity          = entity,
                EntityOldValues = eventArgs.EntityOldValues,
                ChangeType      = eventArgs.ChangeType
            };

            whenEntityRecordChangesSubject.OnNext(recordChangedNotification);
        }
Example #2
0
        internal void OnMessageReceived(RecordChangedNotification <TEntity> recordChange)
        {
            if (recordChange.ChangeType == ChangeType.None)
            {
                return;
            }

            var entityChange = new EntityChange <TEntity>(recordChange.Entity, Convert(recordChange.ChangeType));

            reactiveData.Publish(entityChange);
        }
        public void PushMessage(ChangeType changeType)
        {
            var notification = new RecordChangedNotification <TestModel>
            {
                Entity     = new TestModel(),
                ChangeType = changeType
            };

            var message = JsonConvert.SerializeObject(notification);

            OnMessageReceived(message);
        }
Example #4
0
        public void OnChanged_WhenEntityRecordChangesNotifies_Inserted()
        {
            //Arrange
            var sqlDependencyProvider = CreateClassUnderTest();

            sqlDependencyProvider.SubscribeToEntityChanges();

            RecordChangedNotification <TestModel> recordChangedNotification = null;

            var subscription = sqlDependencyProvider.WhenEntityRecordChanges.Subscribe(c => recordChangedNotification = c);

            var recordChangedEventArgsNotification = CreateRecordChangedEventArgsNotification(ChangeType.Insert);

            //Act
            tableDependencyMoq.Raise(m => m.OnChanged += null, tableDependencyMoq.Object, recordChangedEventArgsNotification);

            //Assert
            Assert.IsNotNull(recordChangedNotification);
            Assert.AreEqual(ChangeType.Insert, recordChangedNotification.ChangeType);

            subscription.Dispose();
        }
Example #5
0
 public async Task SendDataChange(RecordChangedNotification <Product> recordChangedNotification)
 {
     await Clients.All.SendAsync("ReceiveDataChange", recordChangedNotification);
 }
        protected void OnSqlTableDependencyRecordChanged(RecordChangedNotification <TEntity> recordChangedNotification)
        {
            string jsonNotification = Serialize(recordChangedNotification);

            redisPublisher.PublishAsync(ChangesChannelName, jsonNotification);
        }