mirror of
https://github.com/ryankazokas/turbovault-app.git
synced 2026-04-17 00:32:53 +00:00
Adds types
This commit is contained in:
@@ -22,7 +22,7 @@ class IgdbSyncJob < ApplicationJob
|
||||
end
|
||||
|
||||
self.class.mark_running!
|
||||
|
||||
|
||||
begin
|
||||
sync_users_with_igdb
|
||||
ensure
|
||||
@@ -34,16 +34,16 @@ class IgdbSyncJob < ApplicationJob
|
||||
|
||||
def sync_users_with_igdb
|
||||
users = User.where(igdb_sync_enabled: true)
|
||||
|
||||
|
||||
Rails.logger.info("Starting IGDB sync for #{users.count} users")
|
||||
|
||||
|
||||
users.find_each do |user|
|
||||
sync_user_games(user)
|
||||
rescue => e
|
||||
Rails.logger.error("Error syncing user #{user.id}: #{e.message}")
|
||||
next
|
||||
end
|
||||
|
||||
|
||||
Rails.logger.info("IGDB sync completed")
|
||||
end
|
||||
|
||||
@@ -51,20 +51,20 @@ class IgdbSyncJob < ApplicationJob
|
||||
# Get games that need IGDB matching
|
||||
games = user.games
|
||||
.igdb_unmatched
|
||||
.where(igdb_match_status: [nil, "failed"])
|
||||
.where(igdb_match_status: [ nil, "failed" ])
|
||||
.includes(:platform)
|
||||
|
||||
|
||||
return if games.empty?
|
||||
|
||||
Rails.logger.info("Syncing #{games.count} games for user #{user.id}")
|
||||
|
||||
|
||||
igdb_service = IgdbService.new
|
||||
games_synced = 0
|
||||
|
||||
|
||||
games.find_each do |game|
|
||||
process_game_matching(game, igdb_service)
|
||||
games_synced += 1
|
||||
|
||||
|
||||
# Rate limiting: Additional sleep every 10 games
|
||||
sleep(1) if games_synced % 10 == 0
|
||||
rescue => e
|
||||
@@ -78,16 +78,16 @@ class IgdbSyncJob < ApplicationJob
|
||||
|
||||
def process_game_matching(game, igdb_service)
|
||||
Rails.logger.info("Searching IGDB for: #{game.title} (#{game.platform.name})")
|
||||
|
||||
|
||||
# Try searching WITH platform first
|
||||
results = igdb_service.search_game(game.title, game.platform, 3)
|
||||
|
||||
|
||||
# If no results, try WITHOUT platform (broader search)
|
||||
if results.empty?
|
||||
Rails.logger.info("No results with platform, trying without platform filter...")
|
||||
results = igdb_service.search_game(game.title, nil, 3)
|
||||
end
|
||||
|
||||
|
||||
if results.empty?
|
||||
Rails.logger.info("No IGDB matches found for game #{game.id}")
|
||||
game.update(igdb_match_status: "no_results")
|
||||
@@ -95,7 +95,7 @@ class IgdbSyncJob < ApplicationJob
|
||||
end
|
||||
|
||||
Rails.logger.info("Found #{results.count} potential matches for game #{game.id}")
|
||||
|
||||
|
||||
# Create match suggestions for user review
|
||||
results.each do |result|
|
||||
create_match_suggestion(game, result)
|
||||
@@ -130,7 +130,7 @@ class IgdbSyncJob < ApplicationJob
|
||||
confidence_score: result[:confidence_score],
|
||||
status: "pending"
|
||||
)
|
||||
|
||||
|
||||
Rails.logger.info("Created match suggestion: #{result[:name]} (confidence: #{result[:confidence_score]}%)")
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
Rails.logger.warn("Failed to create match suggestion: #{e.message}")
|
||||
|
||||
Reference in New Issue
Block a user