Example #1
0
        protected override async Task <JobResult> ProcessQueueEntryAsync(QueueEntryContext <AddressTransactedWorkItem> context)
        {
            string address = context.QueueEntry.Value.Address;

            if (string.IsNullOrEmpty(address))
            {
                return(JobResult.SuccessWithMessage("Address was empty (maybe a contract deployment?), skipping"));
            }

            if (await _addressCache.ExistsAsync(address).AnyContext())
            {
                return(JobResult.SuccessWithMessage($"Address {address} exists in cache, skipping"));
            }

            try
            {
                if (!await _addressRepository.AddressExists(address).AnyContext())
                {
                    await _addressRepository.UpsertAddress(new CinderAddress { Hash = address, ForceRefresh = true }).AnyContext();
                }

                await _addressCache.AddAsync(address, string.Empty).AnyContext();
            }
            catch (Exception e)
            {
                return(JobResult.FromException(e));
            }

            return(JobResult.Success);
        }