From 52415cf4daf4d4cf4a2be1f1f04eccf1b6568515 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sat, 11 Sep 2021 13:05:15 -0400 Subject: [PATCH] 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 --- tagdb/__init__.py | 5 +++++ tagdb/test_tagdb.py | 3 +++ tagdb/track.py | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/tagdb/__init__.py b/tagdb/__init__.py index 15735bc..c9a05c1 100644 --- a/tagdb/__init__.py +++ b/tagdb/__init__.py @@ -3,8 +3,10 @@ from . import allocator from . import stack from . import tags from . import track +import db import lib import pathlib +import scanner import threading File = "tagdb.pickle" @@ -78,6 +80,8 @@ def load(): global Library global Tracks global Stack + if not db.new_db(): + return with lib.data.DataFile(File, lib.data.READ) as f: if f.exists(): (tagstate, Tracks, Library, Stack) = f.unpickle() @@ -85,6 +89,7 @@ def load(): Tracks.load_tags() Library.fix_tracks() __register_callbacks() + scanner.Queue.push(scanner.task.CommitTask()) def __register_callbacks(): for store in [ Library, tags.User, Tracks ]: diff --git a/tagdb/test_tagdb.py b/tagdb/test_tagdb.py index 569b3db..dbda4e4 100644 --- a/tagdb/test_tagdb.py +++ b/tagdb/test_tagdb.py @@ -1,4 +1,5 @@ # Copyright 2020 (c) Anna Schumaker. +import db import lib import pathlib import tagdb @@ -8,6 +9,7 @@ test_tracks = pathlib.Path("./data/Test Album") class TestLibraryTag(unittest.TestCase): def tearDown(self): + db.NewDatabase = True tagdb.reset() def test_library_tag_init(self): @@ -122,6 +124,7 @@ class TestTrackDB(unittest.TestCase): tagdb.Bus.complete() self.assertTrue(db_file.exists()) + db.reset() tagdb.tags.reset() tagdb.Library.reset() tagdb.Tracks.reset() diff --git a/tagdb/track.py b/tagdb/track.py index d0d715d..6bf3bb4 100644 --- a/tagdb/track.py +++ b/tagdb/track.py @@ -4,6 +4,8 @@ from lib import publisher from . import tags from gi.repository import GObject import datetime +import db +import scanner class Track(GObject.Object): def __init__(self, trackid, filepath, library): @@ -66,6 +68,9 @@ class Track(GObject.Object): self.decade = tags.Decade.init_track(self.decade, 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 ] + 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): tags.Artist.remove(self.artist, self)