improve monitor

This commit is contained in:
Dylan Knutson
2025-08-12 23:05:41 +00:00
parent dea2071662
commit 1357eb9095
2 changed files with 14 additions and 7 deletions

View File

@@ -138,13 +138,15 @@ module Tasks::Bluesky
conn.exec_query(
"LISTEN #{Bluesky::MonitoredDid::REMOVED_NOTIFY_CHANNEL}",
)
conn.raw_connection.wait_for_notify do |event, pid, payload|
logger.info("NOTIFY: #{event} / pid: #{pid} / payload: #{payload}")
case event
when Bluesky::MonitoredDid::ADDED_NOTIFY_CHANNEL
@dids.add(payload)
when Bluesky::MonitoredDid::REMOVED_NOTIFY_CHANNEL
@dids.delete(payload)
loop do
conn.raw_connection.wait_for_notify do |event, pid, payload|
logger.info("NOTIFY: #{event} / pid: #{pid} / payload: #{payload}")
case event
when Bluesky::MonitoredDid::ADDED_NOTIFY_CHANNEL
@dids.add(payload)
when Bluesky::MonitoredDid::REMOVED_NOTIFY_CHANNEL
@dids.delete(payload)
end
end
end
rescue Interrupt

View File

@@ -23,6 +23,11 @@ namespace :bluesky do
raise "did is required" if did.blank?
Bluesky::MonitoredDid.create!(did: did)
user =
Domain::User::BlueskyUser.find_or_create_by!(did:) do |user|
user.handle = handle
end
Domain::Bluesky::Job::ScanUserJob.perform_later(user:)
end
desc "Remove a DID from the Bluesky monitor"