add support for Base Eventing Mechanism for Store's ...
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
namespace xModels.Base
|
||||
{
|
||||
public class XBaseStorableDtoEventModel<T>
|
||||
{
|
||||
public T Model { get; set; }
|
||||
|
||||
public XBaseStorableDtoEventModel(T model)
|
||||
{
|
||||
Model = model;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reactive.Linq;
|
||||
using System.Reactive.Subjects;
|
||||
using xModels.Interfaces;
|
||||
|
||||
namespace xModels.Base
|
||||
{
|
||||
public abstract class XBaseStoreEvent<T, TKey> : IXBaseStoreEvents<T, TKey>
|
||||
where T : XBaseStorableDto<TKey>
|
||||
{
|
||||
//
|
||||
private readonly ISubject<XBaseStorableDtoEventModel<T>> onAddSubject;
|
||||
private readonly ISubject<XBaseStorableDtoEventModel<T>> onUpdateSubject;
|
||||
private readonly ISubject<XBaseStorableDtoEventModel<T>> onRemoveSubject;
|
||||
|
||||
//
|
||||
private readonly ISubject<XBaseStorableDtoEventModel<IEnumerable<T>>> onAddManySubject;
|
||||
private readonly ISubject<XBaseStorableDtoEventModel<IEnumerable<T>>> onUpdateManySubject;
|
||||
private readonly ISubject<XBaseStorableDtoEventModel<IEnumerable<T>>> onRemoveManySubject;
|
||||
|
||||
//
|
||||
public IObservable<XBaseStorableDtoEventModel<T>> OnAddObservable => onAddSubject.AsObservable();
|
||||
|
||||
public IObservable<XBaseStorableDtoEventModel<T>> OnUpdateObservable => onUpdateSubject.AsObservable();
|
||||
|
||||
public IObservable<XBaseStorableDtoEventModel<T>> OnRemoveObservable => onRemoveSubject.AsObservable();
|
||||
|
||||
//
|
||||
|
||||
public IObservable<XBaseStorableDtoEventModel<IEnumerable<T>>> OnAddManyObservable => onAddManySubject.AsObservable();
|
||||
|
||||
public IObservable<XBaseStorableDtoEventModel<IEnumerable<T>>> OnUpdateManyObservable => onUpdateManySubject.AsObservable();
|
||||
|
||||
public IObservable<XBaseStorableDtoEventModel<IEnumerable<T>>> OnRemoveManyObservable => onRemoveManySubject.AsObservable();
|
||||
|
||||
//
|
||||
protected XBaseStoreEvent()
|
||||
{
|
||||
//
|
||||
onAddSubject = new ReplaySubject<XBaseStorableDtoEventModel<T>>(1);
|
||||
onUpdateSubject = new ReplaySubject<XBaseStorableDtoEventModel<T>>(1);
|
||||
onRemoveSubject = new ReplaySubject<XBaseStorableDtoEventModel<T>>(1);
|
||||
|
||||
//
|
||||
onAddManySubject = new ReplaySubject<XBaseStorableDtoEventModel<IEnumerable<T>>>(1);
|
||||
onUpdateManySubject = new ReplaySubject<XBaseStorableDtoEventModel<IEnumerable<T>>>(1);
|
||||
onRemoveManySubject = new ReplaySubject<XBaseStorableDtoEventModel<IEnumerable<T>>>(1);
|
||||
}
|
||||
|
||||
//
|
||||
#region Base Actions ...
|
||||
public void AddEvent(XBaseStorableDtoEventModel<T> model)
|
||||
{
|
||||
onAddSubject.OnNext(model);
|
||||
}
|
||||
|
||||
public void AddManyEvent(XBaseStorableDtoEventModel<IEnumerable<T>> model)
|
||||
{
|
||||
onAddManySubject.OnNext(model);
|
||||
}
|
||||
|
||||
public void RemoveEvent(XBaseStorableDtoEventModel<T> model)
|
||||
{
|
||||
onRemoveSubject.OnNext(model);
|
||||
}
|
||||
|
||||
public void RemoveManyEvent(XBaseStorableDtoEventModel<IEnumerable<T>> model)
|
||||
{
|
||||
onRemoveManySubject.OnNext(model);
|
||||
}
|
||||
|
||||
public void UpdateEvent(XBaseStorableDtoEventModel<T> model)
|
||||
{
|
||||
onUpdateSubject.OnNext(model);
|
||||
}
|
||||
|
||||
public void UpdateManyEvent(XBaseStorableDtoEventModel<IEnumerable<T>> model)
|
||||
{
|
||||
onUpdateManySubject.OnNext(model);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using xModels.Base;
|
||||
|
||||
namespace xModels.Interfaces
|
||||
{
|
||||
public interface IXBaseStoreEvents<T, TKey> where T : XBaseStorableDto<TKey>
|
||||
{
|
||||
//
|
||||
void AddEvent(XBaseStorableDtoEventModel<T> model);
|
||||
void UpdateEvent(XBaseStorableDtoEventModel<T> model);
|
||||
void RemoveEvent(XBaseStorableDtoEventModel<T> model);
|
||||
|
||||
//
|
||||
void AddManyEvent(XBaseStorableDtoEventModel<IEnumerable<T>> model);
|
||||
void UpdateManyEvent(XBaseStorableDtoEventModel<IEnumerable<T>> model);
|
||||
void RemoveManyEvent(XBaseStorableDtoEventModel<IEnumerable<T>> model);
|
||||
|
||||
//
|
||||
IObservable<XBaseStorableDtoEventModel<T>> OnAddObservable { get; }
|
||||
IObservable<XBaseStorableDtoEventModel<T>> OnUpdateObservable { get; }
|
||||
IObservable<XBaseStorableDtoEventModel<T>> OnRemoveObservable { get; }
|
||||
|
||||
//
|
||||
IObservable<XBaseStorableDtoEventModel<IEnumerable<T>>> OnAddManyObservable { get; }
|
||||
IObservable<XBaseStorableDtoEventModel<IEnumerable<T>>> OnUpdateManyObservable { get; }
|
||||
IObservable<XBaseStorableDtoEventModel<IEnumerable<T>>> OnRemoveManyObservable { get; }
|
||||
|
||||
}
|
||||
}
|
||||
+661
-506
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user