public BaseHasUnsyncedDataTest(Func <ITogglDatabase, IBaseStorage <TDatabaseModel> > repository,
                                Func <TModel, TDatabaseModel> dirty, Func <TModel, string, TDatabaseModel> unsyncable)
 {
     this.repository = repository(Database);
     this.dirty      = dirty;
     this.unsyncable = unsyncable;
 }
Beispiel #2
0
 public static IObservable <IEnumerable <IConflictResolutionResult <TModel> > > UpdateWithConflictResolution <TModel>(
     this IBaseStorage <TModel> repository,
     long id,
     TModel entity,
     Func <TModel, TModel, ConflictResolutionMode> conflictResolution,
     IRivalsResolver <TModel> rivalsResolver = null)
 => repository
 .BatchUpdate(new[] { (id, entity) }, conflictResolution, rivalsResolver)
        void LoadNextStorage()
        {
            if (_storageLoadQueue.Count <= 0)
            {
                OnStoragesUpdateComplete();
                return;
            }

            IBaseStorage currentStorage = _storageLoadQueue.Dequeue();

            if (currentStorage == null)
            {
                LoadNextStorage();
                return;
            }

            currentStorage.LoadData();
        }
Beispiel #4
0
 private IObservable <bool> hasUnsyncedData <TModel>(IBaseStorage <TModel> repository)
     where TModel : IDatabaseSyncable
 => repository
 .GetAll(entity => entity.SyncStatus != SyncStatus.InSync)
 .Select(unsynced => unsynced.Any())
 .SingleAsync();
Beispiel #5
0
 public static IObservable <TModel> Update <TModel>(this IBaseStorage <TModel> repository, TModel entity)
     where TModel : IIdentifiable, IDatabaseSyncable
 => repository.Update(entity.Id, entity);
Beispiel #6
0
        protected BaseDataSource(IBaseStorage <TDatabase> repository)
        {
            Ensure.Argument.IsNotNull(repository, nameof(repository));

            this.repository = repository;
        }