mirror of
https://github.com/Syfaro/fuzzysearch.git
synced 2024-11-23 23:32:32 +00:00
Include content rating.
This commit is contained in:
parent
c345c51a0f
commit
274d545734
@ -301,6 +301,7 @@ pub async fn search_file(
|
|||||||
submission.url,
|
submission.url,
|
||||||
submission.filename,
|
submission.filename,
|
||||||
submission.file_id,
|
submission.file_id,
|
||||||
|
submission.rating,
|
||||||
artist.name,
|
artist.name,
|
||||||
hashes.id hash_id
|
hashes.id hash_id
|
||||||
FROM
|
FROM
|
||||||
@ -321,6 +322,7 @@ pub async fn search_file(
|
|||||||
submission.url,
|
submission.url,
|
||||||
submission.filename,
|
submission.filename,
|
||||||
submission.file_id,
|
submission.file_id,
|
||||||
|
submission.rating,
|
||||||
artist.name,
|
artist.name,
|
||||||
hashes.id hash_id
|
hashes.id hash_id
|
||||||
FROM
|
FROM
|
||||||
@ -341,6 +343,7 @@ pub async fn search_file(
|
|||||||
submission.url,
|
submission.url,
|
||||||
submission.filename,
|
submission.filename,
|
||||||
submission.file_id,
|
submission.file_id,
|
||||||
|
submission.rating,
|
||||||
artist.name,
|
artist.name,
|
||||||
hashes.id hash_id
|
hashes.id hash_id
|
||||||
FROM
|
FROM
|
||||||
@ -374,6 +377,7 @@ pub async fn search_file(
|
|||||||
file_id: row.get("file_id"),
|
file_id: row.get("file_id"),
|
||||||
})),
|
})),
|
||||||
searched_hash: None,
|
searched_hash: None,
|
||||||
|
rating: row.get::<String, _>("rating").parse().ok(),
|
||||||
})
|
})
|
||||||
.fetch_all(&db)
|
.fetch_all(&db)
|
||||||
.await;
|
.await;
|
||||||
|
@ -117,7 +117,16 @@ pub fn image_query_sync(
|
|||||||
END file_id,
|
END file_id,
|
||||||
CASE
|
CASE
|
||||||
WHEN e621_id IS NOT NULL THEN ARRAY(SELECT jsonb_array_elements_text(e.data->'sources'))
|
WHEN e621_id IS NOT NULL THEN ARRAY(SELECT jsonb_array_elements_text(e.data->'sources'))
|
||||||
END sources
|
END sources,
|
||||||
|
CASE
|
||||||
|
WHEN furaffinity_id IS NOT NULL THEN (f.rating)
|
||||||
|
WHEN e621_id IS NOT NULL THEN (e.data->>'rating')
|
||||||
|
WHEN twitter_id IS NOT NULL THEN
|
||||||
|
CASE
|
||||||
|
WHEN (tw.data->'possibly_sensitive')::boolean IS true THEN 'adult'
|
||||||
|
WHEN (tw.data->'possibly_sensitive')::boolean IS false THEN 'general'
|
||||||
|
END
|
||||||
|
END rating
|
||||||
FROM
|
FROM
|
||||||
hashes
|
hashes
|
||||||
LEFT JOIN LATERAL (
|
LEFT JOIN LATERAL (
|
||||||
@ -169,6 +178,7 @@ pub fn image_query_sync(
|
|||||||
id: row.id,
|
id: row.id,
|
||||||
site_id,
|
site_id,
|
||||||
site_info,
|
site_info,
|
||||||
|
rating: row.rating.and_then(|rating| rating.parse().ok()),
|
||||||
site_id_str: site_id.to_string(),
|
site_id_str: site_id.to_string(),
|
||||||
url: row.url.unwrap_or_default(),
|
url: row.url.unwrap_or_default(),
|
||||||
hash: Some(row.hash),
|
hash: Some(row.hash),
|
||||||
|
25
src/types.rs
25
src/types.rs
@ -23,6 +23,29 @@ pub enum RateLimit {
|
|||||||
Available((i16, i16)),
|
Available((i16, i16)),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
#[serde(rename_all = "lowercase")]
|
||||||
|
pub enum Rating {
|
||||||
|
General,
|
||||||
|
Mature,
|
||||||
|
Adult,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::str::FromStr for Rating {
|
||||||
|
type Err = &'static str;
|
||||||
|
|
||||||
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
|
let rating = match s {
|
||||||
|
"g" | "s" | "general" => Self::General,
|
||||||
|
"m" | "q" | "mature" => Self::Mature,
|
||||||
|
"a" | "e" | "adult" => Self::Adult,
|
||||||
|
_ => return Err("unknown rating"),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(rating)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A general type for every file.
|
/// A general type for every file.
|
||||||
#[derive(Debug, Default, Serialize)]
|
#[derive(Debug, Default, Serialize)]
|
||||||
pub struct File {
|
pub struct File {
|
||||||
@ -39,6 +62,8 @@ pub struct File {
|
|||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
pub site_info: Option<SiteInfo>,
|
pub site_info: Option<SiteInfo>,
|
||||||
|
|
||||||
|
pub rating: Option<Rating>,
|
||||||
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub hash: Option<i64>,
|
pub hash: Option<i64>,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
Loading…
Reference in New Issue
Block a user