fix: ensure no duplicate results when checking for missing collectible/collection ids in the db
This commit is contained in:
parent
c3e7d3823f
commit
fcde7ccafe
|
@ -203,6 +203,12 @@ func scanCollectiblesDataRow(row *sql.Row) (*thirdparty.CollectibleData, error)
|
||||||
|
|
||||||
func (o *CollectibleDataDB) GetIDsNotInDB(ids []thirdparty.CollectibleUniqueID) ([]thirdparty.CollectibleUniqueID, error) {
|
func (o *CollectibleDataDB) GetIDsNotInDB(ids []thirdparty.CollectibleUniqueID) ([]thirdparty.CollectibleUniqueID, error) {
|
||||||
ret := make([]thirdparty.CollectibleUniqueID, 0, len(ids))
|
ret := make([]thirdparty.CollectibleUniqueID, 0, len(ids))
|
||||||
|
idMap := make(map[string]thirdparty.CollectibleUniqueID, len(ids))
|
||||||
|
|
||||||
|
// Ensure we don't have duplicates
|
||||||
|
for _, id := range ids {
|
||||||
|
idMap[id.HashKey()] = id
|
||||||
|
}
|
||||||
|
|
||||||
exists, err := o.db.Prepare(`SELECT EXISTS (
|
exists, err := o.db.Prepare(`SELECT EXISTS (
|
||||||
SELECT 1 FROM collectible_data_cache
|
SELECT 1 FROM collectible_data_cache
|
||||||
|
@ -212,7 +218,7 @@ func (o *CollectibleDataDB) GetIDsNotInDB(ids []thirdparty.CollectibleUniqueID)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, id := range ids {
|
for _, id := range idMap {
|
||||||
row := exists.QueryRow(
|
row := exists.QueryRow(
|
||||||
id.ContractID.ChainID,
|
id.ContractID.ChainID,
|
||||||
id.ContractID.Address,
|
id.ContractID.Address,
|
||||||
|
|
|
@ -180,6 +180,12 @@ func scanCollectionsDataRow(row *sql.Row) (*thirdparty.CollectionData, error) {
|
||||||
|
|
||||||
func (o *CollectionDataDB) GetIDsNotInDB(ids []thirdparty.ContractID) ([]thirdparty.ContractID, error) {
|
func (o *CollectionDataDB) GetIDsNotInDB(ids []thirdparty.ContractID) ([]thirdparty.ContractID, error) {
|
||||||
ret := make([]thirdparty.ContractID, 0, len(ids))
|
ret := make([]thirdparty.ContractID, 0, len(ids))
|
||||||
|
idMap := make(map[string]thirdparty.ContractID, len(ids))
|
||||||
|
|
||||||
|
// Ensure we don't have duplicates
|
||||||
|
for _, id := range ids {
|
||||||
|
idMap[id.HashKey()] = id
|
||||||
|
}
|
||||||
|
|
||||||
exists, err := o.db.Prepare(`SELECT EXISTS (
|
exists, err := o.db.Prepare(`SELECT EXISTS (
|
||||||
SELECT 1 FROM collection_data_cache
|
SELECT 1 FROM collection_data_cache
|
||||||
|
@ -189,7 +195,7 @@ func (o *CollectionDataDB) GetIDsNotInDB(ids []thirdparty.ContractID) ([]thirdpa
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, id := range ids {
|
for _, id := range idMap {
|
||||||
row := exists.QueryRow(
|
row := exists.QueryRow(
|
||||||
id.ChainID,
|
id.ChainID,
|
||||||
id.Address,
|
id.Address,
|
||||||
|
|
Loading…
Reference in New Issue