mirror of
https://git.nadeko.net/Fijxu/invidious.git
synced 2026-02-13 20:17:13 +00:00
Provide rough draft of better project organization
This commit is contained in:
3
src/invidious/jobs/base_job.cr
Normal file
3
src/invidious/jobs/base_job.cr
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract class Invidious::Jobs::BaseJob
|
||||
abstract def begin
|
||||
end
|
||||
27
src/invidious/jobs/pull_popular_videos_job.cr
Normal file
27
src/invidious/jobs/pull_popular_videos_job.cr
Normal 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
|
||||
Reference in New Issue
Block a user