public async Task CompleteTransfer(string multisig, string asset, Guid transferId)
        {
            var entity = await _table.GetDataAsync(OffchainTransferEntity.ByRecord.GenerateId(multisig, asset));

            if (entity?.TransferId == transferId)
            {
                var archive = OffchainTransferEntity.Archive.Create(entity);
                archive.Completed = true;
                await Task.WhenAll(_table.InsertAsync(archive), _table.DeleteAsync(entity));
            }
        }
        public async Task CloseChannel(string multisig, string asset, Guid channelId)
        {
            var current = (OffchainChannelEntity) await GetChannel(multisig, asset);

            if (current != null && current.ChannelId == channelId)
            {
                var archived = OffchainChannelEntity.Archived.Create(current);
                await _table.InsertAsync(archived);

                await _table.DeleteAsync(current);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Elimina un readmodel
        /// ?? gestire un flag di eliminato e memorizzare l'id dell'evento??
        /// </summary>
        /// <param name="e"></param>
        /// <param name="id"></param>
        /// <param name="notify"></param>
        public async Task DeleteAsync(DomainEvent e, TKey id, bool notify = false)
        {
            string[] topics = null;

            if (NotifySubscribers && typeof(ITopicsProvider).IsAssignableFrom(typeof(TModel)))
            {
                var model = await _storage.FindOneByIdAsync(id).ConfigureAwait(false);

                if (model == null)
                {
                    return;
                }

                topics = ((ITopicsProvider)model).GetTopics().ToArray();
            }

            var result = await _storage.DeleteAsync(id).ConfigureAwait(false);

            if (!result.Ok)
            {
                throw new CollectionWrapperException(FormatCollectionWrapperExceptionMessage(string.Format("Delete error on {0} :: {1}", typeof(TModel).FullName, id), e));
            }

            if (result.DocumentsAffected == 1 && ShouldSendNotification(e, notify))
            {
                await _notifyToSubscribers.Send(ReadModelUpdatedMessage.Deleted <TModel, TKey>(id, topics)).ConfigureAwait(false);
            }
        }
Beispiel #4
0
        public async Task CompleteClosingChannel(string multisig, string asset, Guid closingChannelId)
        {
            var closing = await GetClosingChannel(multisig, asset);

            if (closing?.ClosingChannelId == closingChannelId)
            {
                await Task.WhenAll(
                    _table.InsertAsync(ClosingChannelEntity.Archived.Create(closing)),
                    _table.DeleteAsync((ClosingChannelEntity)closing)
                    );
            }
        }
Beispiel #5
0
 public async Task Clear()
 {
     await _storage.DeleteAsync(x => true);
 }
 public async Task DeleteOutput(string transactionHash, int n)
 {
     await _table.DeleteAsync(o => o.TransactionHash == transactionHash && o.N == n);
 }
 public async Task RemoveSpentOutputs(IEnumerable <IOutput> outputs)
 {
     var ids = outputs.Select(x => OutputEntity.GenerateId(x.TransactionHash, x.N)).ToArray();
     await _storage.DeleteAsync(o => ids.Contains(o.BsonId));
 }
 public Task DeleteAsync(string assetId)
 {
     return(_storage.DeleteAsync(assetId));
 }
 public async Task RemoveCommitmentsOfChannel(string multisig, string asset, Guid channelId)
 {
     await _table.DeleteAsync(o => o.Multisig == multisig && o.AssetId == asset && o.ChannelId == channelId && o.Actual);
 }