diff --git a/db/album.py b/db/album.py index fc9a142..e210f3c 100644 --- a/db/album.py +++ b/db/album.py @@ -22,6 +22,8 @@ class Album(playlist.ParentPlaylist): @GObject.Property def name(self): return self._name + def delete(self): Table.delete(self) + def find_disc(self, number, subtitle): return self.find_child(number, subtitle) diff --git a/db/artist.py b/db/artist.py index a19483c..484d95c 100644 --- a/db/artist.py +++ b/db/artist.py @@ -22,6 +22,8 @@ class Artist(playlist.ParentPlaylist): @GObject.Property def name(self): return self._name + def delete(self): Table.delete(self) + def find_album(self, name): return self.find_child(name) def get_child_table(self): return album.Table diff --git a/db/decade.py b/db/decade.py index c39c4cd..a3aec8e 100644 --- a/db/decade.py +++ b/db/decade.py @@ -20,8 +20,8 @@ class Decade(playlist.ParentPlaylist): @GObject.Property def name(self): return f"{self._decade}s" + def delete(self): Table.delete(self) def find_year(self, yr): return self.find_child(yr) - def get_child_table(self): return year.Table def lookup_child(self, yr): return year.Table.lookup(yr) diff --git a/db/disc.py b/db/disc.py index 9b4743d..f8a103b 100644 --- a/db/disc.py +++ b/db/disc.py @@ -14,6 +14,8 @@ class Disc(playlist.Playlist): self._number = row["number"] self._subtitle = row["subtitle"] + def delete(self): Table.delete(self) + @GObject.Property def name(self): if self._subtitle: diff --git a/db/genre.py b/db/genre.py index 4066abc..e31f9c5 100644 --- a/db/genre.py +++ b/db/genre.py @@ -25,6 +25,8 @@ class Genre(playlist.Playlist): playlist.Playlist.__init__(self, row, "emblem-generic") self._name = row["name"] + def delete(self): Table.delete(self) + @GObject.Property def name(self): return self._name diff --git a/db/library.py b/db/library.py index 3afe061..9b0d15d 100644 --- a/db/library.py +++ b/db/library.py @@ -32,6 +32,8 @@ class Library(playlist.Playlist): sql.commit() self._enabled = newval + def delete(self): Table.delete(self) + def tracks(self): cursor = sql.execute(f"SELECT trackid FROM tracks " "WHERE libraryid=?", [ self.rowid ]) diff --git a/db/playlist.py b/db/playlist.py index e14bda6..1ced26b 100644 --- a/db/playlist.py +++ b/db/playlist.py @@ -11,6 +11,8 @@ class Playlist(GObject.GObject): self._plstate = state.Table.get(row["plstateid"]) self._icon_name = icon_name + def delete(self): raise NotImplementedError + def has_children(self): return False @GObject.Property diff --git a/db/test_album.py b/db/test_album.py index ac171f0..574620d 100644 --- a/db/test_album.py +++ b/db/test_album.py @@ -16,6 +16,12 @@ class TestAlbum(unittest.TestCase): self.assertEqual(album.get_property("icon-name"), "media-optical-cd-audio") self.assertEqual(album.get_child_table(), db.disc.Table) + def test_delete(self): + artist = db.artist.Table.find("Test Artist", "Test Sort") + album = artist.find_album("Test Album") + album.delete() + self.assertIsNone(db.album.Table.lookup(artist, "Test Album")) + def test_find_disc(self): artist = db.artist.Table.find("Test Artist", "Test Sort") album = artist.find_album("Test Album") diff --git a/db/test_artist.py b/db/test_artist.py index 2b02b9f..821d56c 100644 --- a/db/test_artist.py +++ b/db/test_artist.py @@ -15,6 +15,11 @@ class TestArtist(unittest.TestCase): self.assertEqual(artist.get_property("icon-name"), "avatar-default-symbolic") self.assertEqual(artist.get_child_table(), db.album.Table) + def test_delete(self): + artist = db.artist.Table.find("Test Artist", "Test Sort") + artist.delete() + self.assertIsNone(db.artist.Table.lookup("Test Artist")) + def test_find_album(self): artist = db.artist.Table.find("Test Artist", "Test Sort") album = artist.find_album("Test Album") diff --git a/db/test_decade.py b/db/test_decade.py index 64b9f36..9178f91 100644 --- a/db/test_decade.py +++ b/db/test_decade.py @@ -23,6 +23,11 @@ class TestDecade(unittest.TestCase): self.assertEqual(decade._decade, 2020) self.assertEqual(decade.get_property("decade"), 2020) + def test_delete(self): + decade = db.decade.Table.find(2020) + decade.delete() + self.assertIsNone(db.decade.Table.lookup(2020)) + def test_find_year(self): decade = db.decade.Table.insert(2020) decade.connect("children-changed", self.children_changed) diff --git a/db/test_disc.py b/db/test_disc.py index 6464dae..384ce45 100644 --- a/db/test_disc.py +++ b/db/test_disc.py @@ -18,6 +18,13 @@ class TestDisc(unittest.TestCase): self.assertEqual(disc.get_property("icon-name"), "media-optical") self.assertEqual(disc._number, 1) + def test_delete(self): + artist = db.artist.Table.find("Test Artist", "Test Artist") + album = artist.find_album("Test Album") + disc = album.find_disc(1, "") + disc.delete() + self.assertIsNone(db.disc.Table.lookup(album, 1)) + def test_subtitle(self): disc = self.make_disc("Test Artist", "Test Album", 1, "Test Subtitle") self.assertEqual(disc._subtitle, "Test Subtitle") diff --git a/db/test_genre.py b/db/test_genre.py index eb085e8..eef33a7 100644 --- a/db/test_genre.py +++ b/db/test_genre.py @@ -16,6 +16,11 @@ class TestGenre(unittest.TestCase): self.assertEqual(genre.get_property("name"), "Test Genre") self.assertEqual(genre.get_property("icon-name"), "emblem-generic") + def test_delete(self): + genre = db.genre.Table.find("Test Genre") + genre.delete() + self.assertIsNone(db.genre.Table.lookup("Test Genre")) + class TestGenreTable(unittest.TestCase): def setUp(self): diff --git a/db/test_library.py b/db/test_library.py index cfbb5cb..59c2de2 100644 --- a/db/test_library.py +++ b/db/test_library.py @@ -16,6 +16,11 @@ class TestLibrary(unittest.TestCase): self.assertEqual(library.get_property("name"), "/a/b/c") self.assertEqual(library.get_property("icon-name"), "folder-music") + def test_delete(self): + library = db.library.Table.find(pathlib.Path("/a/b/c")) + library.delete() + self.assertIsNone(db.library.Table.lookup(pathlib.Path("/a/b/c"))) + def test_path(self): library = db.library.Table.insert(pathlib.Path("/a/b/c")) self.assertIsInstance(library._path, pathlib.Path) diff --git a/db/test_playlist.py b/db/test_playlist.py index f4a76dc..2618e51 100644 --- a/db/test_playlist.py +++ b/db/test_playlist.py @@ -22,6 +22,8 @@ class TestPlaylist(unittest.TestCase): with self.assertRaises(NotImplementedError): plist.get_property("name") + with self.assertRaises(NotImplementedError): + plist.delete() class TestParentPlaylist(unittest.TestCase): diff --git a/db/test_user.py b/db/test_user.py index 7fc0cc0..45db347 100644 --- a/db/test_user.py +++ b/db/test_user.py @@ -47,6 +47,11 @@ class TestUserPlaylist(unittest.TestCase): self.assertEqual(plist.get_property("name"), "Test Playlist") self.assertEqual(plist.icon_name, "audio-x-generic") + def test_delete(self): + plist = db.user.Table.find("Test Playlist") + plist.delete() + self.assertIsNone(db.user.Table.lookup("Test Playlist")) + class TestUserTable(unittest.TestCase): def setUp(self): diff --git a/db/test_year.py b/db/test_year.py index 499ff4f..0f49648 100644 --- a/db/test_year.py +++ b/db/test_year.py @@ -16,6 +16,12 @@ class TestYear(unittest.TestCase): self.assertEqual(year.get_property("year"), 2021) self.assertEqual(year.get_property("icon-name"), "x-office-calendar") + def test_delete(self): + decade = db.decade.Table.find(2020) + year = decade.find_year(2021) + year.delete() + self.assertIsNone(db.year.Table.lookup(2021)) + class TestYearTable(unittest.TestCase): def setUp(self): diff --git a/db/user.py b/db/user.py index 48fc1d9..7151ee5 100644 --- a/db/user.py +++ b/db/user.py @@ -20,6 +20,8 @@ class UserPlaylist(playlist.Playlist): playlist.Playlist.__init__(self, row, icon_name) self._name = row["name"] + def delete(self): Table.delete(self) + @GObject.Property def name(self): return self._name diff --git a/db/year.py b/db/year.py index 5212cc7..9215034 100644 --- a/db/year.py +++ b/db/year.py @@ -13,6 +13,8 @@ class Year(playlist.Playlist): playlist.Playlist.__init__(self, row, "x-office-calendar") self._year = row["year"] + def delete(self): Table.delete(self) + @GObject.Property def name(self): return str(self._year)