public AsyncSubject <Unit> Insert(IEnumerable <CacheElement> items) { var ret = OperationQueueItem.CreateInsert(OperationType.BulkInsertSqliteOperation, items); _operationQueue.Add(ret); return(ret.CompletionAsUnit); }
static OperationQueueItem GroupUnrelatedInserts(IEnumerable <OperationQueueItem> unrelatedInserts) { if (unrelatedInserts.Count() == 1) { return(unrelatedInserts.First()); } var subj = new AsyncSubject <Unit>(); var elements = unrelatedInserts.SelectMany(x => { subj.Subscribe(x.CompletionAsUnit); return(x.ParametersAsElements); }).ToList(); return(OperationQueueItem.CreateInsert( OperationType.BulkInsertSqliteOperation, elements, subj)); }
private static OperationQueueItem GroupUnrelatedInserts(IEnumerable <OperationQueueItem> unrelatedInserts) { var operationQueueItems = unrelatedInserts.ToList(); if (operationQueueItems.Count == 1) { return(operationQueueItems[0]); } var subj = new AsyncSubject <Unit>(); var elements = operationQueueItems.SelectMany(x => { subj.Subscribe(x.CompletionAsUnit); return(x.ParametersAsElements ?? Enumerable.Empty <CacheElement>()); }).ToList(); return(OperationQueueItem.CreateInsert( OperationType.BulkInsertSqliteOperation, elements, subj)); }