Skip to content

Commit

Permalink
Introduce suggestion icon struct
Browse files Browse the repository at this point in the history
  • Loading branch information
dadaa committed May 16, 2024
1 parent a4ec8b2 commit 5fb03e6
Show file tree
Hide file tree
Showing 6 changed files with 1,707 additions and 1,739 deletions.
30 changes: 17 additions & 13 deletions components/suggest/src/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ use crate::{
DownloadedWikipediaSuggestion, SuggestRecordId,
},
schema::{clear_database, SuggestConnectionInitializer},
suggestion::{cook_raw_suggestion_url, AmpSuggestionType, Suggestion},
suggestion::{cook_raw_suggestion_url, AmpSuggestionType, Suggestion, SuggestionIcon},
Result, SuggestionQuery,
};

Expand Down Expand Up @@ -274,7 +274,7 @@ impl<'a> SuggestDao<'a> {
amp.iab_category,
amp.impression_url,
amp.click_url,
i.data AS icon,
i.data AS icon_data,
i.mimetype AS icon_mimetype
FROM
amp_custom_details amp
Expand All @@ -290,6 +290,12 @@ impl<'a> SuggestDao<'a> {
let cooked_url = cook_raw_suggestion_url(&raw_url);
let raw_click_url = row.get::<_, String>("click_url")?;
let cooked_click_url = cook_raw_suggestion_url(&raw_click_url);
let icon_data = row.get::<_, Option<_>>("icon_data")?;
let icon_mime_type = row.get::<_, Option<_>>("icon_mimetype")?;
let icon = icon_data.map(|data| SuggestionIcon {
data,
mime_type: icon_mime_type.unwrap_or_default(),
});

Ok(Suggestion::Amp {
block_id: row.get("block_id")?,
Expand All @@ -300,8 +306,7 @@ impl<'a> SuggestDao<'a> {
raw_url,
full_keyword: full_keyword_from_db
.unwrap_or_else(|| full_keyword(keyword_lowercased, &keywords)),
icon: row.get("icon")?,
icon_mimetype: row.get("icon_mimetype")?,
icon,
impression_url: row.get("impression_url")?,
click_url: cooked_click_url,
raw_click_url,
Expand Down Expand Up @@ -353,7 +358,7 @@ impl<'a> SuggestDao<'a> {
},
|row| row.get(0),
)?;
let (icon, icon_mimetype) = self
let icon = self
.conn
.try_query_row(
"SELECT i.data, i.mimetype
Expand All @@ -365,21 +370,20 @@ impl<'a> SuggestDao<'a> {
":suggestion_id": suggestion_id
},
|row| -> Result<_> {
Ok((
row.get::<_, Option<Vec<u8>>>(0)?,
row.get::<_, Option<String>>(1)?,
))
Ok(Some(SuggestionIcon {
data: row.get::<_, Vec<u8>>(0)?,
mime_type: row.get::<_, String>(1)?,
}))
},
true,
)?
.unwrap_or((None, None));
.unwrap_or(None);

Ok(Suggestion::Wikipedia {
title,
url: raw_url,
full_keyword: full_keyword(keyword_lowercased, &keywords),
icon,
icon_mimetype,
})
},
)?;
Expand Down Expand Up @@ -961,7 +965,7 @@ impl<'a> SuggestDao<'a> {
}

/// Inserts or replaces an icon for a suggestion into the database.
pub fn put_icon(&mut self, icon_id: &str, data: &[u8], mimetype: &str) -> Result<()> {
pub fn put_icon(&mut self, icon_id: &str, data: &[u8], mime_type: &str) -> Result<()> {
self.conn.execute(
"INSERT OR REPLACE INTO icons(
id,
Expand All @@ -976,7 +980,7 @@ impl<'a> SuggestDao<'a> {
named_params! {
":id": icon_id,
":data": data,
":mimetype": mimetype,
":mimetype": mime_type,
},
)?;
Ok(())
Expand Down
2 changes: 1 addition & 1 deletion components/suggest/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ pub use config::{SuggestGlobalConfig, SuggestProviderConfig};
pub use error::SuggestApiError;
pub use provider::SuggestionProvider;
pub use store::{SuggestIngestionConstraints, SuggestStore, SuggestStoreBuilder};
pub use suggestion::{raw_suggestion_url_matches, Suggestion};
pub use suggestion::{raw_suggestion_url_matches, Suggestion, SuggestionIcon};

pub(crate) type Result<T> = std::result::Result<T, error::Error>;
pub type SuggestApiResult<T> = std::result::Result<T, error::SuggestApiError>;
Expand Down
Loading

0 comments on commit 5fb03e6

Please sign in to comment.