Provide rough draft of better project organization

This commit is contained in:
Matthew McGarvey 2020-10-05 23:41:18 -05:00
parent 1978c3d3bd
commit 85c212aee3
9 changed files with 115 additions and 43 deletions

View file

@ -0,0 +1,3 @@
abstract class Invidious::Jobs::BaseJob
abstract def begin
end

View file

@ -0,0 +1,27 @@
class Invidious::Jobs::PullPopularVideosJob < Invidious::Jobs::BaseJob
QUERY = <<-SQL
SELECT DISTINCT ON (ucid) *
FROM channel_videos
WHERE ucid IN (SELECT channel FROM (SELECT UNNEST(subscriptions) AS channel FROM users) AS d
GROUP BY channel ORDER BY COUNT(channel) DESC LIMIT 40)
ORDER BY ucid, published DESC
SQL
POPULAR_VIDEOS = Atomic.new([] of ChannelVideo)
private getter db : DB::Database
def initialize(@db)
end
def begin
loop do
videos = db.query_all(QUERY, as: ChannelVideo)
.sort_by(&.published)
.reverse
POPULAR_VIDEOS.set(videos)
sleep 1.minute
Fiber.yield
end
end
end