Compare commits
7 Commits
b925c167ed
...
126be83e68
Author | SHA1 | Date |
---|---|---|
Brahim Hadriche | 126be83e68 | |
Émilien (perso) | b673695aa2 | |
ChunkyProgrammer | 170eef58fd | |
Brahim Hadriche | 389e6a7659 | |
Brahim Hadriche | 3a84359e7d | |
Brahim Hadriche | 58f66761fb | |
Brahim Hadriche | 7ca72c5b6f |
|
@ -32,7 +32,7 @@ services:
|
|||
# statistics_enabled: false
|
||||
hmac_key: "CHANGE_ME!!"
|
||||
healthcheck:
|
||||
test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/comments/jNQXAC9IVRw || exit 1
|
||||
test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 2
|
||||
|
|
|
@ -85,6 +85,25 @@ module Invidious::Database::Channels
|
|||
|
||||
return PG_DB.query_all(request, ids, as: InvidiousChannel)
|
||||
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
|
||||
|
||||
#
|
||||
|
|
|
@ -153,7 +153,12 @@ module Invidious::Routes::API::V1::Authenticated
|
|||
env.response.content_type = "application/json"
|
||||
user = env.get("user").as(User)
|
||||
|
||||
subscriptions = Invidious::Database::Channels.select(user.subscriptions)
|
||||
sort = env.params.query["sort"]?.try &.== "last"
|
||||
if sort
|
||||
subscriptions = Invidious::Database::Channels.select_sorted(user.subscriptions)
|
||||
else
|
||||
subscriptions = Invidious::Database::Channels.select(user.subscriptions)
|
||||
end
|
||||
|
||||
JSON.build do |json|
|
||||
json.array do
|
||||
|
|
Loading…
Reference in New Issue