duplicate record fix

This commit is contained in:
zramsay 2025-03-25 14:22:34 -04:00
parent caed17d870
commit 3da19f8b7f

View File

@ -164,7 +164,10 @@ export async function getAnimalRecordsBySeiAddress(seiAddress: string): Promise<
}
// Transform the response into our AnimalRecordResult format
const records = (data.data?.queryRecords || []).map((record: any) => {
console.log(`Received ${data.data?.queryRecords?.length || 0} records from GraphQL`);
// First, convert the records to our format
const mappedRecords = (data.data?.queryRecords || []).map((record: any) => {
// Convert attributes to a map
const attributesMap = record.attributes.reduce((acc: any, attr: any) => {
acc[attr.key] = attr.value.string || attr.value.int || attr.value.float;
@ -198,7 +201,21 @@ export async function getAnimalRecordsBySeiAddress(seiAddress: string): Promise<
seiAddress: attributesMap.seiAddress || seiAddress,
timestamp: record.createTime || new Date().toISOString()
};
}).filter((record: AnimalRecordResult) => record.imageUrl && record.imageUrl.trim() !== '');
});
// Filter valid records and remove duplicates by using the record ID
const uniqueRecordMap = new Map();
mappedRecords
.filter((record: AnimalRecordResult) => record.imageUrl && record.imageUrl.trim() !== '')
.forEach((record: AnimalRecordResult) => {
// Only add if this ID isn't already in our map
if (!uniqueRecordMap.has(record.id)) {
uniqueRecordMap.set(record.id, record);
}
});
const records = Array.from(uniqueRecordMap.values());
// Sort by timestamp descending (newest first)
return records.sort((a, b) => {
@ -264,7 +281,10 @@ export async function getAllAnimalRecords(): Promise<AnimalRecordResult[]> {
}
// Transform the response into our AnimalRecordResult format
const records = (data.data?.queryRecords || []).map((record: any) => {
console.log(`Received ${data.data?.queryRecords?.length || 0} records from GraphQL for all records`);
// First, convert the records to our format
const mappedRecords = (data.data?.queryRecords || []).map((record: any) => {
// Convert attributes to a map
const attributesMap = record.attributes.reduce((acc: any, attr: any) => {
acc[attr.key] = attr.value.string || attr.value.int || attr.value.float;
@ -298,7 +318,21 @@ export async function getAllAnimalRecords(): Promise<AnimalRecordResult[]> {
seiAddress: attributesMap.seiAddress || '',
timestamp: record.createTime || new Date().toISOString()
};
}).filter((record: AnimalRecordResult) => record.imageUrl && record.imageUrl.trim() !== '');
});
// Filter valid records and remove duplicates by using the record ID
const uniqueRecordMap = new Map();
mappedRecords
.filter((record: AnimalRecordResult) => record.imageUrl && record.imageUrl.trim() !== '')
.forEach((record: AnimalRecordResult) => {
// Only add if this ID isn't already in our map
if (!uniqueRecordMap.has(record.id)) {
uniqueRecordMap.set(record.id, record);
}
});
const records = Array.from(uniqueRecordMap.values());
// Sort by timestamp descending (newest first)
return records.sort((a, b) => {