Skip to main content

fetch_similar_games

Function fetch_similar_games 

Source
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 persistente

Cache:

  • gamebrain_id e similares: TTL de 30 dias (estável)

Parâmetros:

  • app: AppHandle do Tauri, necessário para acessar database e secrets
  • playlite_game_id: UUID interno do jogo na biblioteca do Playlite
  • game_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.