From 4fa70cb2349c7bc9b04ca40963e2f39af8afca67 Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Fri, 18 Sep 2015 14:36:52 -0700 Subject: [PATCH] Update grouping logic * Check the user's previous row to match the rating key --- plexpy/__init__.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/plexpy/__init__.py b/plexpy/__init__.py index 0f402399..af357158 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -611,15 +611,19 @@ def dbcheck(): c_db.execute( 'ALTER TABLE session_history ADD COLUMN reference_id INTEGER DEFAULT 0' ) - # Set reference_id to the first row where (rating_key != previous row OR user_id != previous row) + # Set reference_id to the first row where (user_id = previous row, rating_key != previous row) and user_id = user_id c_db.execute( 'UPDATE session_history ' \ - 'SET reference_id = (SELECT (CASE WHEN (SELECT MIN(id) FROM session_history WHERE id > ( \ - SELECT MAX(id) FROM session_history WHERE (rating_key <> t1.rating_key OR user_id <> t1.user_id) AND id < t1.id)) IS NULL \ - THEN (SELECT MIN(id) FROM session_history) ELSE (SELECT MIN(id) FROM session_history WHERE id > ( \ - SELECT MAX(id) FROM session_history WHERE (rating_key <> t1.rating_key OR user_id <> t1.user_id) AND id < t1.id)) END) ' \ - 'FROM session_history AS t1 ' \ - 'WHERE t1.id = session_history.id) ' + 'SET reference_id = (SELECT (CASE \ + WHEN (SELECT MIN(id) FROM session_history WHERE id > ( \ + SELECT MAX(id) FROM session_history \ + WHERE (user_id = t1.user_id AND rating_key <> t1.rating_key AND id < t1.id)) AND user_id = t1.user_id) IS NULL \ + THEN (SELECT MIN(id) FROM session_history WHERE (user_id = t1.user_id)) \ + ELSE (SELECT MIN(id) FROM session_history WHERE id > ( \ + SELECT MAX(id) FROM session_history \ + WHERE (user_id = t1.user_id AND rating_key <> t1.rating_key AND id < t1.id)) AND user_id = t1.user_id) END) ' \ + 'FROM session_history AS t1 ' \ + 'WHERE t1.id = session_history.id) ' ) conn_db.commit()