tagdb: Have Tracks schedule an ImportTask when loading

And a CommitTask when we're done. Note: we only load and import the
tagdb if we are creating a new database.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-09-11 13:05:15 -04:00
parent 2f1b7b397f
commit 52415cf4da
3 changed files with 13 additions and 0 deletions

View File

@ -3,8 +3,10 @@ from . import allocator
from . import stack from . import stack
from . import tags from . import tags
from . import track from . import track
import db
import lib import lib
import pathlib import pathlib
import scanner
import threading import threading
File = "tagdb.pickle" File = "tagdb.pickle"
@ -78,6 +80,8 @@ def load():
global Library global Library
global Tracks global Tracks
global Stack global Stack
if not db.new_db():
return
with lib.data.DataFile(File, lib.data.READ) as f: with lib.data.DataFile(File, lib.data.READ) as f:
if f.exists(): if f.exists():
(tagstate, Tracks, Library, Stack) = f.unpickle() (tagstate, Tracks, Library, Stack) = f.unpickle()
@ -85,6 +89,7 @@ def load():
Tracks.load_tags() Tracks.load_tags()
Library.fix_tracks() Library.fix_tracks()
__register_callbacks() __register_callbacks()
scanner.Queue.push(scanner.task.CommitTask())
def __register_callbacks(): def __register_callbacks():
for store in [ Library, tags.User, Tracks ]: for store in [ Library, tags.User, Tracks ]:

View File

@ -1,4 +1,5 @@
# Copyright 2020 (c) Anna Schumaker. # Copyright 2020 (c) Anna Schumaker.
import db
import lib import lib
import pathlib import pathlib
import tagdb import tagdb
@ -8,6 +9,7 @@ test_tracks = pathlib.Path("./data/Test Album")
class TestLibraryTag(unittest.TestCase): class TestLibraryTag(unittest.TestCase):
def tearDown(self): def tearDown(self):
db.NewDatabase = True
tagdb.reset() tagdb.reset()
def test_library_tag_init(self): def test_library_tag_init(self):
@ -122,6 +124,7 @@ class TestTrackDB(unittest.TestCase):
tagdb.Bus.complete() tagdb.Bus.complete()
self.assertTrue(db_file.exists()) self.assertTrue(db_file.exists())
db.reset()
tagdb.tags.reset() tagdb.tags.reset()
tagdb.Library.reset() tagdb.Library.reset()
tagdb.Tracks.reset() tagdb.Tracks.reset()

View File

@ -4,6 +4,8 @@ from lib import publisher
from . import tags from . import tags
from gi.repository import GObject from gi.repository import GObject
import datetime import datetime
import db
import scanner
class Track(GObject.Object): class Track(GObject.Object):
def __init__(self, trackid, filepath, library): def __init__(self, trackid, filepath, library):
@ -66,6 +68,9 @@ class Track(GObject.Object):
self.decade = tags.Decade.init_track(self.decade, self) self.decade = tags.Decade.init_track(self.decade, self)
self.year = tags.Year.init_track(self.decade, self.year, self) self.year = tags.Year.init_track(self.decade, self.year, self)
self.playlists = [ tags.User.init_track(p, self) for p in self.playlists ] self.playlists = [ tags.User.init_track(p, self) for p in self.playlists ]
scanner.import_track(db.library.Table.find(self.library.name),
self.filepath(), self.playcount, self.lastplayed,
[ p.name for p in self.playlists ])
def about_to_remove(self): def about_to_remove(self):
tags.Artist.remove(self.artist, self) tags.Artist.remove(self.artist, self)