mirror of
https://github.com/iv-org/invidious.git
synced 2025-07-28 16:28:29 +00:00
channels sorted by last published video
This commit is contained in:
parent
8087e64dfe
commit
7ca72c5b6f
@ -85,6 +85,25 @@ module Invidious::Database::Channels
|
|||||||
|
|
||||||
return PG_DB.query_all(request, ids, as: InvidiousChannel)
|
return PG_DB.query_all(request, ids, as: InvidiousChannel)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Select channels sorted by last published video
|
||||||
|
def select_sorted(ids : Array(String)) : Array(InvidiousChannel)?
|
||||||
|
return [] of InvidiousChannel if ids.empty?
|
||||||
|
|
||||||
|
request = <<-SQL
|
||||||
|
WITH max_published AS (
|
||||||
|
SELECT ucid, MAX(published) AS last_published
|
||||||
|
FROM channel_videos
|
||||||
|
GROUP BY ucid
|
||||||
|
)
|
||||||
|
SELECT channels.id, channels.author, channels.subscribed, channels.updated, channels.deleted FROM channels
|
||||||
|
LEFT JOIN max_published ON channels.id = max_published.ucid
|
||||||
|
WHERE channels.id = ANY($1)
|
||||||
|
ORDER BY max_published.last_published DESC NULLS LAST;
|
||||||
|
SQL
|
||||||
|
|
||||||
|
return PG_DB.query_all(request, ids, as: InvidiousChannel)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -153,7 +153,12 @@ module Invidious::Routes::API::V1::Authenticated
|
|||||||
env.response.content_type = "application/json"
|
env.response.content_type = "application/json"
|
||||||
user = env.get("user").as(User)
|
user = env.get("user").as(User)
|
||||||
|
|
||||||
subscriptions = Invidious::Database::Channels.select(user.subscriptions)
|
sorted = env.params.query["sorted"]?.try &.== "true"
|
||||||
|
if sorted
|
||||||
|
subscriptions = Invidious::Database::Channels.select_sorted(user.subscriptions)
|
||||||
|
else
|
||||||
|
subscriptions = Invidious::Database::Channels.select(user.subscriptions)
|
||||||
|
end
|
||||||
|
|
||||||
JSON.build do |json|
|
JSON.build do |json|
|
||||||
json.array do
|
json.array do
|
||||||
|
Loading…
Reference in New Issue
Block a user