romm_api/core/
metadata.rs1use crate::client::RommClient;
4use crate::core::cache::{RomCache, RomCacheKey};
5use crate::endpoints::roms::{GetSearchCover, GetSearchRoms, RomUpdateFields};
6use crate::error::ApiError;
7use crate::types::metadata::{SearchCover, SearchRom};
8
9pub fn invalidate_platform_rom_cache(platform_id: u64) {
11 let mut c = RomCache::load();
12 c.remove(&RomCacheKey::Platform(platform_id));
13}
14
15pub fn search_row_apply_fields(row: &SearchRom) -> RomUpdateFields {
17 RomUpdateFields {
18 name: Some(row.name.clone()),
19 summary: row.summary.clone().filter(|s| !s.is_empty()),
20 url_cover: row.best_url_cover(),
21 match_fields: row.primary_match_fields(),
22 }
23}
24
25pub async fn search_metadata_matches(
27 client: &RommClient,
28 rom_id: u64,
29 search_term: Option<String>,
30 search_by: Option<String>,
31) -> Result<Vec<SearchRom>, ApiError> {
32 client
33 .call(&GetSearchRoms {
34 rom_id,
35 search_term,
36 search_by,
37 })
38 .await
39}
40
41pub async fn search_covers(
43 client: &RommClient,
44 search_term: &str,
45) -> Result<Vec<SearchCover>, ApiError> {
46 client
47 .call(&GetSearchCover {
48 search_term: search_term.to_string(),
49 })
50 .await
51}