func dbFetchFilterIdxEntry(dbTx database.Tx, key []byte, h *chainhash.Hash) ([]byte, error) {
	idx := dbTx.Metadata().Bucket(cfIndexParentBucketKey).Bucket(key)
	return idx.Get(h[:]), nil
}
dbFetchFilterIdxEntry retrieves a data blob from the filter index database.
An entry's absence is not considered an error.
package indexers
import (
	"errors"
	"github.com/soteria-dag/soterd/blockchain"
	"github.com/soteria-dag/soterd/chaincfg"
	"github.com/soteria-dag/soterd/chaincfg/chainhash"
	"github.com/soteria-dag/soterd/database"
	"github.com/soteria-dag/soterd/wire"
	"github.com/soteria-dag/soterd/soterutil"
	"github.com/soteria-dag/soterd/soterutil/gcs"
	"github.com/soteria-dag/soterd/soterutil/gcs/builder"
)
const (
	cfIndexName = "committed filter index"
)
var (
	cfIndexParentBucketKey = []byte("cfindexparentbucket")
	cfIndexKeys = [][]byte{
		[]byte("cf0byhashidx"),
	}
	cfHeaderKeys = [][]byte{
		[]byte("cf0headerbyhashidx"),
	}
	cfHashKeys = [][]byte{
		[]byte("cf0hashbyhashidx"),
	}
	maxFilterType = uint8(len(cfHeaderKeys) - 1)
	zeroHash chainhash.Hash
)