@@ -3,8 +3,6 @@ const express = require("express");
33
44const db = require ( "../db" ) ;
55const dbHelper = require ( "../classes/db-helper" ) ;
6-
7- const pgp = require ( "pg-promise" ) ( ) ;
86const { randomUUID } = require ( "crypto" ) ;
97
108const configClass = require ( "../classes/config" ) ;
@@ -136,10 +134,25 @@ async function purgeLibraryItems(id, withActivity, purgeAll = false) {
136134 await db . query ( items_query , [ id ] ) ;
137135
138136 if ( withActivity ) {
137+ const whereClauses = [ ] ;
138+ const values = [ ] ;
139+
140+ if ( episodeIds . length > 0 ) {
141+ values . push ( episodeIds ) ;
142+ whereClauses . push ( `"EpisodeId" = ANY($${ values . length } )` ) ;
143+ }
144+
145+ if ( seasonIds . length > 0 ) {
146+ values . push ( seasonIds ) ;
147+ whereClauses . push ( `"SeasonId" = ANY($${ values . length } )` ) ;
148+ }
149+
150+ values . push ( id ) ;
151+ whereClauses . push ( `"NowPlayingItemId" = $${ values . length } ` ) ;
152+
139153 const deleteQuery = {
140- text : `DELETE FROM jf_playback_activity WHERE${
141- episodeIds . length > 0 ? ` "EpisodeId" IN (${ pgp . as . csv ( episodeIds ) } ) OR` : ""
142- } ${ seasonIds . length > 0 ? ` "SeasonId" IN (${ pgp . as . csv ( seasonIds ) } ) OR` : "" } "NowPlayingItemId"='${ id } '`,
154+ text : `DELETE FROM jf_playback_activity WHERE ${ whereClauses . join ( " OR " ) } ` ,
155+ values,
143156 refreshViews : true ,
144157 } ;
145158 await db . query ( deleteQuery ) ;
@@ -1123,12 +1136,27 @@ router.delete("/item/purge", async (req, res) => {
11231136 await db . query ( `delete from jf_library_items where "Id"=$1` , [ id ] ) ;
11241137 }
11251138 if ( withActivity ) {
1139+ const whereClauses = [ ] ;
1140+ const values = [ ] ;
1141+ const episodeActivityIds = episodes . map ( ( item ) => item . EpisodeId ) ;
1142+ const seasonActivityIds = seasons . map ( ( item ) => item . Id ) ;
1143+
1144+ if ( episodeActivityIds . length > 0 ) {
1145+ values . push ( episodeActivityIds ) ;
1146+ whereClauses . push ( `"EpisodeId" = ANY($${ values . length } )` ) ;
1147+ }
1148+
1149+ if ( seasonActivityIds . length > 0 ) {
1150+ values . push ( seasonActivityIds ) ;
1151+ whereClauses . push ( `"SeasonId" = ANY($${ values . length } )` ) ;
1152+ }
1153+
1154+ values . push ( id ) ;
1155+ whereClauses . push ( `"NowPlayingItemId" = $${ values . length } ` ) ;
1156+
11261157 const deleteQuery = {
1127- text : `DELETE FROM jf_playback_activity WHERE${
1128- episodes . length > 0 ? ` "EpisodeId" IN (${ pgp . as . csv ( episodes . map ( ( item ) => item . EpisodeId ) ) } ) OR` : ""
1129- } ${
1130- seasons . length > 0 ? ` "SeasonId" IN (${ pgp . as . csv ( seasons . map ( ( item ) => item . SeasonId ) ) } ) OR` : ""
1131- } "NowPlayingItemId"='${ id } '`,
1158+ text : `DELETE FROM jf_playback_activity WHERE ${ whereClauses . join ( " OR " ) } ` ,
1159+ values,
11321160 refreshViews : true ,
11331161 } ;
11341162 await db . query ( deleteQuery ) ;
0 commit comments