status-im/status-go

View on GitHub
services/wallet/activity/get_collectibles.sql

Summary

Maintainability
Test Coverage
-- Query for getting collectibles from transfers
-- It can be filtered by owner addresses and networks
WITH filter_conditions AS (
        SELECT 
            ? AS filterAllAddresses,
            ? AS includeAllNetworks
    ),
    owner_addresses(address) AS (
        VALUES 
            %s
    ),
    filter_networks(network_id) AS (
        VALUES
            %s
    )
SELECT network_id, token_address, token_id 
FROM 
    transfers, filter_conditions
WHERE 
token_id IS NOT NULL
AND token_address IS NOT NULL 
AND (
    filterAllAddresses 
    OR tx_from_address IN owner_addresses 
    OR tx_to_address IN owner_addresses
) 
AND (
    includeAllNetworks 
    OR network_id IN filter_networks
)
GROUP BY
    token_id, token_address
LIMIT ? OFFSET ?