Skip to content

Commit 6c8defa

Browse files
committed
Bug 1884816 - Expose icon information for suggestion as struct
1 parent ffacc52 commit 6c8defa

File tree

6 files changed

+724
-732
lines changed

6 files changed

+724
-732
lines changed

components/suggest/src/db.rs

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use crate::{
2727
},
2828
schema::{clear_database, SuggestConnectionInitializer, VERSION},
2929
store::{UnparsableRecord, UnparsableRecords},
30-
suggestion::{cook_raw_suggestion_url, AmpSuggestionType, Suggestion},
30+
suggestion::{cook_raw_suggestion_url, AmpSuggestionType, Suggestion, SuggestionIcon},
3131
Result, SuggestionQuery,
3232
};
3333

@@ -290,7 +290,7 @@ impl<'a> SuggestDao<'a> {
290290
amp.iab_category,
291291
amp.impression_url,
292292
amp.click_url,
293-
i.data AS icon,
293+
i.data AS icon_data,
294294
i.mimetype AS icon_mimetype
295295
FROM
296296
amp_custom_details amp
@@ -306,6 +306,12 @@ impl<'a> SuggestDao<'a> {
306306
let cooked_url = cook_raw_suggestion_url(&raw_url);
307307
let raw_click_url = row.get::<_, String>("click_url")?;
308308
let cooked_click_url = cook_raw_suggestion_url(&raw_click_url);
309+
let icon_data = row.get::<_, Option<_>>("icon_data")?;
310+
let icon_mime_type = row.get::<_, Option<_>>("icon_mimetype")?;
311+
let icon = icon_data.map(|data| SuggestionIcon {
312+
data,
313+
mime_type: icon_mime_type.unwrap_or_default(),
314+
});
309315

310316
Ok(Suggestion::Amp {
311317
block_id: row.get("block_id")?,
@@ -316,8 +322,7 @@ impl<'a> SuggestDao<'a> {
316322
raw_url,
317323
full_keyword: full_keyword_from_db
318324
.unwrap_or_else(|| full_keyword(keyword_lowercased, &keywords)),
319-
icon: row.get("icon")?,
320-
icon_mimetype: row.get("icon_mimetype")?,
325+
icon,
321326
impression_url: row.get("impression_url")?,
322327
click_url: cooked_click_url,
323328
raw_click_url,
@@ -368,7 +373,7 @@ impl<'a> SuggestDao<'a> {
368373
},
369374
|row| row.get(0),
370375
)?;
371-
let (icon, icon_mimetype) = self
376+
let icon = self
372377
.conn
373378
.try_query_row(
374379
"SELECT i.data, i.mimetype
@@ -380,21 +385,20 @@ impl<'a> SuggestDao<'a> {
380385
":suggestion_id": suggestion_id
381386
},
382387
|row| -> Result<_> {
383-
Ok((
384-
row.get::<_, Option<Vec<u8>>>(0)?,
385-
row.get::<_, Option<String>>(1)?,
386-
))
388+
Ok(Some(SuggestionIcon {
389+
data: row.get::<_, Vec<u8>>(0)?,
390+
mime_type: row.get::<_, String>(1)?,
391+
}))
387392
},
388393
true,
389394
)?
390-
.unwrap_or((None, None));
395+
.unwrap_or(None);
391396

392397
Ok(Suggestion::Wikipedia {
393398
title,
394399
url: raw_url,
395400
full_keyword: full_keyword(keyword_lowercased, &keywords),
396401
icon,
397-
icon_mimetype,
398402
})
399403
},
400404
)?;
@@ -1171,7 +1175,7 @@ impl<'a> SuggestDao<'a> {
11711175
}
11721176

11731177
/// Inserts or replaces an icon for a suggestion into the database.
1174-
pub fn put_icon(&mut self, icon_id: &str, data: &[u8], mimetype: &str) -> Result<()> {
1178+
pub fn put_icon(&mut self, icon_id: &str, data: &[u8], mime_type: &str) -> Result<()> {
11751179
self.conn.execute(
11761180
"INSERT OR REPLACE INTO icons(
11771181
id,
@@ -1186,7 +1190,7 @@ impl<'a> SuggestDao<'a> {
11861190
named_params! {
11871191
":id": icon_id,
11881192
":data": data,
1189-
":mimetype": mimetype,
1193+
":mimetype": mime_type,
11901194
},
11911195
)?;
11921196
Ok(())

components/suggest/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub use config::{SuggestGlobalConfig, SuggestProviderConfig};
2020
pub use error::SuggestApiError;
2121
pub use provider::SuggestionProvider;
2222
pub use store::{SuggestIngestionConstraints, SuggestStore, SuggestStoreBuilder};
23-
pub use suggestion::{raw_suggestion_url_matches, Suggestion};
23+
pub use suggestion::{raw_suggestion_url_matches, Suggestion, SuggestionIcon};
2424

2525
pub(crate) type Result<T> = std::result::Result<T, error::Error>;
2626
pub type SuggestApiResult<T> = std::result::Result<T, error::SuggestApiError>;

0 commit comments

Comments
 (0)