public Task <PagedResult <Consumer> > BrowseAsync(GetConsumers?query)
        {
            if (query is null)
            {
                return(Task.FromResult(PagedResult <Consumer> .Empty));
            }

            var consumersBytes = _database.GetAllValues().ToArray();

            if (consumersBytes.Length == 0)
            {
                return(Task.FromResult(PagedResult <Consumer> .Empty));
            }

            var consumers = new Consumer[consumersBytes.Length];

            for (var i = 0; i < consumersBytes.Length; i++)
            {
                consumers[i] = Decode(consumersBytes[i]);
            }

            var filteredConsumers = consumers.AsEnumerable();

            if (!(query.AssetId is null))
            {
                filteredConsumers = filteredConsumers.Where(c => c.DataAsset.Id == query.AssetId);
            }

            if (!(query.Address is null))
            {
                filteredConsumers = filteredConsumers.Where(c => c.DataRequest.Consumer == query.Address);
            }

            if (query.OnlyWithAvailableUnits)
            {
                filteredConsumers = filteredConsumers.Where(c => c.HasAvailableUnits == query.OnlyWithAvailableUnits);
            }

            return(Task.FromResult(filteredConsumers.OrderByDescending(c => c.VerificationTimestamp).ToArray().Paginate(query)));
        }