pub async fn fetch_similar_games(
app: &AppHandle,
playlite_game_id: &str,
game_name: &str,
limit: Option<u32>,
) -> Result<Vec<SimilarGame>, String>Expand description
Busca jogos similares ao jogo identificado pelo UUID interno do Playlite.
Fluxo:
playlite_game_id (UUID)
→ cache sqlite gamebrain_id:{UUID}? → gamebrain_id (u64)
→ se não: database::get_game_name(playlite_game_id)
→ /suggestions?query={nome} → gamebrain_id
→ salva no cache persistente
→ cache sqlite gamebrain_similar:{id}? → Vec<SimilarGame>
→ se não: /v1/games/{gamebrain_id}/similar
→ salva no cache persistenteCache:
- gamebrain_id e similares: TTL de 30 dias (estável)
Parâmetros:
app: AppHandle do Tauri, necessário para acessar database e secretsplaylite_game_id: UUID interno do jogo na biblioteca do Playlitegame_name: Nome do jogo, usado como query para /suggestions. Passar diretamente evita uma chamada ao banco.limit: Número de similares a retornar (padrão da API: 10, máx recomendado: 12)
Retorna Err se: API key não estiver configurada, falha de rede ou jogo não encontrado na GameBrain.