recurring loading working now

This commit is contained in:
2025-06-22 11:04:32 +02:00
parent 5eaad428ff
commit 98b28bcd4f
9 changed files with 70 additions and 84 deletions

View File

@@ -1,4 +0,0 @@
class LoadActivitiesJob < ApplicationJob
def perform
end
end

View File

@@ -0,0 +1,13 @@
class LoadAllActivitiesJob < ApplicationJob
def perform
User.all.each do |user|
begin
next if user.logins.alive.empty?
LoadUserActivitiesJob.perform_later(user)
logger.info("Loading for #{user.id} scheduled")
rescue StandardError => e
Rails.logger.error("Loading for #{user.id} failed: #{e.class} - #{e.message}")
end
end
end
end

View File

@@ -0,0 +1,32 @@
class LoadUserActivitiesJob < ApplicationJob
attr_reader :user
def perform(user)
logger.info("Loading for #{user.id} started")
@user = user
user.logins.alive.each do |login|
update_spotify(login)
end
end
def update_spotify(login)
client = SpotifyClient.new(login)
last_spotify_activity_at = latest_activity_iso(login.platform)
new_activities = client.load_since(last_spotify_activity_at)
create_action = CreateSpotifyActivity.new(user, new_activities)
create_action.perform
logger.info("Loading for #{user.id} finished with #{new_activities.size} new activities")
rescue StandardError => e
Rails.logger.error(e)
end
def latest_activity(platform)
latest = Activity.where(user: user, platform: platform).order(started_at: :desc).limit(1).last
latest.started_at&.to_datetime if latest.present?
end
def latest_activity_iso(platform)
latest = latest_activity(platform)
latest.strftime("%Q") if latest.present?
end
end