25 lines
606 B
Crystal
25 lines
606 B
Crystal
|
class Invidious::Jobs::NotificationJob < Invidious::Jobs::BaseJob
|
||
|
private getter connection_channel : Channel({Bool, Channel(PQ::Notification)})
|
||
|
private getter pg_url : URI
|
||
|
|
||
|
def initialize(@connection_channel, @pg_url)
|
||
|
end
|
||
|
|
||
|
def begin
|
||
|
connections = [] of Channel(PQ::Notification)
|
||
|
|
||
|
PG.connect_listen(pg_url, "notifications") { |event| connections.each(&.send(event)) }
|
||
|
|
||
|
loop do
|
||
|
action, connection = connection_channel.receive
|
||
|
|
||
|
case action
|
||
|
when true
|
||
|
connections << connection
|
||
|
when false
|
||
|
connections.delete(connection)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|