scanner: Add a RemoveTask

For unconditionally removing a list of tracks

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-08-26 10:28:36 -04:00
parent 19278af3b8
commit 0f57b10500
2 changed files with 30 additions and 0 deletions

View File

@ -92,3 +92,14 @@ class CheckSchedulerTask(Task):
def run_task(self):
return [ CheckTask(tracks) for tracks in self.track_chunks() ]
class RemoveTask(Task):
def __init__(self, tracks):
Task.__init__(self)
self.tracks = tracks
def run_task(self):
for track in self.tracks:
db.track.Table.delete(track)
db.commit()

View File

@ -160,3 +160,22 @@ class TestScannerCheckSchedulerTask(unittest.TestCase):
self.assertEqual(db.track.Table.get(1), track)
for i in range(1, 76):
self.assertIsNone(db.track.Table.get(1+i))
class TestScannerRemoveTask(unittest.TestCase):
def setUp(self):
db.reset()
def test_scanner_remove_task(self):
lib = db.library.Table.find(test_tracks)
for i in [ 1, 2, 3, 4, 5 ]:
db.make_fake_track(i, i, f"Test Track {i}", f"{lib.path}/{i}.ogg", lib.path)
tracks = [ db.track.Table.get(i) for i in [ 1, 2, 3, 4, 5 ] ]
rt = task.RemoveTask(tracks)
self.assertIsInstance(rt, task.Task)
self.assertEqual(rt.tracks, tracks)
self.assertIsNone(rt.run_task())
for i in [ 1, 2, 3, 4, 5 ]:
self.assertIsNone(db.track.Table.get(i))