summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRay Cheung <github@pragmatic.hk>2020-11-01 12:14:46 +0800
committerRay Cheung <github@pragmatic.hk>2020-11-01 12:20:44 +0800
commitbabe0c31adccaefeaccff5b098b3b57f5fbbd704 (patch)
tree3b55a393f720601bae814b9276f545d576b1beb3 /src
parentaa2ae37365a4d752b0e8de5aa243a58568e5ed71 (diff)
downloadinvidious-babe0c31adccaefeaccff5b098b3b57f5fbbd704.tar.gz
invidious-babe0c31adccaefeaccff5b098b3b57f5fbbd704.tar.bz2
invidious-babe0c31adccaefeaccff5b098b3b57f5fbbd704.zip
Fix stale playlist video counting on add/drop (https://github.com/iv-org/invidious/issues/1448)
The return of `cardinality()` is not affected by the `array_append()` and `array_remove()` of the same statement.
Diffstat (limited to 'src')
-rw-r--r--src/invidious.cr10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 19029fd7..ae562327 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -1127,11 +1127,11 @@ post "/playlist_ajax" do |env|
args = arg_array(video_array)
PG_DB.exec("INSERT INTO playlist_videos VALUES (#{args})", args: video_array)
- PG_DB.exec("UPDATE playlists SET index = array_append(index, $1), video_count = cardinality(index), updated = $2 WHERE id = $3", playlist_video.index, Time.utc, playlist_id)
+ PG_DB.exec("UPDATE playlists SET index = array_append(index, $1), video_count = cardinality(index) + 1, updated = $2 WHERE id = $3", playlist_video.index, Time.utc, playlist_id)
when "action_remove_video"
index = env.params.query["set_video_id"]
PG_DB.exec("DELETE FROM playlist_videos * WHERE index = $1", index)
- PG_DB.exec("UPDATE playlists SET index = array_remove(index, $1), video_count = cardinality(index), updated = $2 WHERE id = $3", index, Time.utc, playlist_id)
+ PG_DB.exec("UPDATE playlists SET index = array_remove(index, $1), video_count = cardinality(index) - 1, updated = $2 WHERE id = $3", index, Time.utc, playlist_id)
when "action_move_video_before"
# TODO: Playlist stub
else
@@ -2499,7 +2499,7 @@ post "/data_control" do |env|
args = arg_array(video_array)
PG_DB.exec("INSERT INTO playlist_videos VALUES (#{args})", args: video_array)
- PG_DB.exec("UPDATE playlists SET index = array_append(index, $1), video_count = cardinality(index), updated = $2 WHERE id = $3", playlist_video.index, Time.utc, playlist.id)
+ PG_DB.exec("UPDATE playlists SET index = array_append(index, $1), video_count = cardinality(index) + 1, updated = $2 WHERE id = $3", playlist_video.index, Time.utc, playlist.id)
end
end
end
@@ -4840,7 +4840,7 @@ post "/api/v1/auth/playlists/:plid/videos" do |env|
args = arg_array(video_array)
PG_DB.exec("INSERT INTO playlist_videos VALUES (#{args})", args: video_array)
- PG_DB.exec("UPDATE playlists SET index = array_append(index, $1), video_count = video_count + 1, updated = $2 WHERE id = $3", playlist_video.index, Time.utc, plid)
+ PG_DB.exec("UPDATE playlists SET index = array_append(index, $1), video_count = cardinality(index) + 1, updated = $2 WHERE id = $3", playlist_video.index, Time.utc, plid)
env.response.headers["Location"] = "#{HOST_URL}/api/v1/auth/playlists/#{plid}/videos/#{playlist_video.index.to_u64.to_s(16).upcase}"
env.response.status_code = 201
@@ -4874,7 +4874,7 @@ delete "/api/v1/auth/playlists/:plid/videos/:index" do |env|
end
PG_DB.exec("DELETE FROM playlist_videos * WHERE index = $1", index)
- PG_DB.exec("UPDATE playlists SET index = array_remove(index, $1), video_count = video_count - 1, updated = $2 WHERE id = $3", index, Time.utc, plid)
+ PG_DB.exec("UPDATE playlists SET index = array_remove(index, $1), video_count = cardinality(index) - 1, updated = $2 WHERE id = $3", index, Time.utc, plid)
env.response.status_code = 204
end