scanner: Add a RemoveLibraryScheduler task
For breaking the tracklist into chunks, and then following up their removal with a library table removal Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
88ebde085b
commit
da78887783
|
@ -113,3 +113,20 @@ class RemoveLibraryTask(Task):
|
|||
def run_task(self):
|
||||
db.library.Table.delete(self.library)
|
||||
db.commit()
|
||||
|
||||
|
||||
class RemoveLibrarySchedulerTask(Task):
|
||||
def __init__(self, library):
|
||||
Task.__init__(self)
|
||||
self.library = library
|
||||
|
||||
def track_chunks(self):
|
||||
tracks = self.library.tracks()
|
||||
while len(tracks) > 0:
|
||||
res = tracks[:50]
|
||||
tracks = tracks[50:]
|
||||
yield res
|
||||
|
||||
def run_task(self):
|
||||
return [ RemoveTask(tracks) for tracks in self.track_chunks() ] + \
|
||||
[ RemoveLibraryTask(self.library) ]
|
||||
|
|
|
@ -194,3 +194,32 @@ class TestScannerRemoveLibraryTask(unittest.TestCase):
|
|||
|
||||
self.assertIsNone(rlt.run_task())
|
||||
self.assertIsNone(db.library.Table.lookup(test_tracks))
|
||||
|
||||
|
||||
class TestScannerRemoveLibrarySchedulerTask(unittest.TestCase):
|
||||
def setUp(self):
|
||||
db.reset()
|
||||
|
||||
def test_scanner_check_scheduler_task(self):
|
||||
lib = db.library.Table.find(test_tracks)
|
||||
for i in range(75):
|
||||
db.make_fake_track(i, i, f"Test Track {i}",f"/a/b/c/{i}.ogg", lib.path)
|
||||
|
||||
rlst = task.RemoveLibrarySchedulerTask(lib)
|
||||
self.assertIsInstance(rlst, task.Task)
|
||||
self.assertEqual(rlst.library, lib)
|
||||
|
||||
tasks = rlst.run_task()
|
||||
self.assertEqual(len(tasks), 3)
|
||||
self.assertIsInstance(tasks[0], task.RemoveTask)
|
||||
self.assertIsInstance(tasks[1], task.RemoveTask)
|
||||
self.assertIsInstance(tasks[2], task.RemoveLibraryTask)
|
||||
self.assertEqual(len(tasks[0].tracks), 50)
|
||||
self.assertEqual(len(tasks[1].tracks), 25)
|
||||
self.assertEqual(tasks[2].library, lib)
|
||||
|
||||
for t in tasks: t.run_task()
|
||||
|
||||
for i in range(1, 76):
|
||||
self.assertIsNone(db.track.Table.get(i))
|
||||
self.assertIsNone(db.library.Table.lookup(test_tracks))
|
||||
|
|
Loading…
Reference in New Issue