db: Clear MappedPlaylists before deleting
Otherwise we end up with a bunch of (playlistid, trackid) pairs in the map table that don't refer to a valid playlist anymore. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
729b1efc9a
commit
8917600970
|
@ -25,7 +25,9 @@ class Genre(playlist.MappedPlaylist):
|
|||
playlist.MappedPlaylist.__init__(self, row, "emblem-generic", "genre_map")
|
||||
self._name = row["name"]
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
def delete(self):
|
||||
self.clear()
|
||||
Table.delete(self)
|
||||
|
||||
@GObject.Property
|
||||
def name(self): return self._name
|
||||
|
|
|
@ -50,6 +50,10 @@ class MappedPlaylist(Playlist):
|
|||
f"({self.rowkey}, trackid) VALUES (?, ?)",
|
||||
[ self.rowid, track.rowid ]).rowcount == 1
|
||||
|
||||
def clear(self):
|
||||
sql.execute(f"DELETE FROM {self.map_table} "
|
||||
f"WHERE {self.rowkey}=?", [ self.rowid ])
|
||||
|
||||
def get_n_tracks(self):
|
||||
cur = sql.execute(f"SELECT COUNT(*) FROM {self.map_table} "
|
||||
f"WHERE {self._rowkey}=?", [ self._rowid ])
|
||||
|
|
|
@ -19,8 +19,11 @@ class TestGenre(unittest.TestCase):
|
|||
self.assertEqual(genre.get_property("map-table"), "genre_map")
|
||||
|
||||
def test_delete(self):
|
||||
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")
|
||||
genre = db.genre.Table.find("Test Genre")
|
||||
genre.add_track(track)
|
||||
genre.delete()
|
||||
self.assertEqual(genre.get_n_tracks(), 0)
|
||||
self.assertIsNone(db.genre.Table.lookup("Test Genre"))
|
||||
|
||||
def test_add_remove_track(self):
|
||||
|
|
|
@ -157,8 +157,11 @@ class TestUserPlaylist(unittest.TestCase):
|
|||
self.assertFalse(plist.plist_state.loop)
|
||||
|
||||
def test_delete(self):
|
||||
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")
|
||||
plist = db.user.Table.find("Test Playlist")
|
||||
plist.add_track(track)
|
||||
plist.delete()
|
||||
self.assertEqual(plist.get_n_tracks(), 0)
|
||||
self.assertIsNone(db.user.Table.lookup("Test Playlist"))
|
||||
|
||||
def test_add_remove_track(self):
|
||||
|
|
|
@ -35,7 +35,9 @@ class UserPlaylist(playlist.MappedPlaylist):
|
|||
playlist.MappedPlaylist.__init__(self, row, icon_name, map_table)
|
||||
self._name = row["name"]
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
def delete(self):
|
||||
self.clear()
|
||||
Table.delete(self)
|
||||
|
||||
@GObject.Property
|
||||
def name(self): return self._name
|
||||
|
|
Loading…
Reference in New Issue