Highly ambitious ATProtocol AppView service and sdks

dedupe keys on batch insert

Changed files
+7
api
src
database
+7
api/src/database/records.rs
··· 60 async fn batch_insert_records_chunk(&self, records: &[Record]) -> Result<(), DatabaseError> { 61 let mut tx = self.pool.begin().await?; 62 63 let mut query = String::from( 64 r#"INSERT INTO "record" ("uri", "cid", "did", "collection", "json", "indexed_at", "slice_uri") VALUES "#, 65 );
··· 60 async fn batch_insert_records_chunk(&self, records: &[Record]) -> Result<(), DatabaseError> { 61 let mut tx = self.pool.begin().await?; 62 63 + let mut deduped = std::collections::HashMap::new(); 64 + for record in records { 65 + let key = (&record.uri, &record.slice_uri); 66 + deduped.insert(key, record); 67 + } 68 + let records: Vec<&Record> = deduped.into_values().collect(); 69 + 70 let mut query = String::from( 71 r#"INSERT INTO "record" ("uri", "cid", "did", "collection", "json", "indexed_at", "slice_uri") VALUES "#, 72 );