db: Give Decades a find_year() function

And adjust the Year table and Track table to take a Decade as an
argument.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-10-09 15:31:23 -04:00
parent 4141ca211c
commit 90c6593921
6 changed files with 20 additions and 8 deletions

View File

@ -21,8 +21,7 @@ def make_fake_track(trackno, length, title, path, lib="/a/b/c", art="Test Artist
alb = album.Table.find(art, alb)
disk = disc.Table.find(alb, disk, subtitle)
dec = decade.Table.find((yeer // 10) * 10)
if (yeer := year.Table.lookup(yeer)) == None:
yeer = year.Table.insert(dec, yeer)
yeer = dec.find_year(yeer)
return track.Table.insert(lib, art, alb, disk, dec, yeer, trackno,
length, title, pathlib.Path(path))

View File

@ -20,7 +20,10 @@ class Decade(playlist.ParentPlaylist):
@GObject.Property
def name(self): return f"{self._decade}s"
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)
class DecadeTable(playlist.Model):

View File

@ -5,6 +5,9 @@ import unittest
from gi.repository import GObject
class TestDecade(unittest.TestCase):
def children_changed(self, decade, pos, rm, add):
self.changed = (pos, rm, add)
def setUp(self):
db.reset()
@ -19,6 +22,14 @@ class TestDecade(unittest.TestCase):
self.assertEqual(decade._decade, 2020)
self.assertEqual(decade.get_property("decade"), 2020)
def test_find_year(self):
decade = db.decade.Table.insert(2020)
decade.connect("children-changed", self.children_changed)
year = decade.find_year(2021)
self.assertIsInstance(year, db.year.Year)
self.assertEqual(self.changed, (0, 0, 1))
class TestDecadeTable(unittest.TestCase):
def setUp(self):

View File

@ -22,7 +22,7 @@ class TestTrackTable(unittest.TestCase):
album = db.album.Table.find(artist, "Test Album")
disc = db.disc.Table.find(album, 1, None)
decade = db.decade.Table.find(2020)
year = db.year.Table.insert(decade, 2021)
year = decade.find_year(2021)
track = db.track.Table.insert(library, artist, album, disc, decade, year,
1, 1.234, "Test Title", pathlib.Path("/a/b/c/d.efg"))

View File

@ -10,7 +10,7 @@ class TestYear(unittest.TestCase):
def test_init(self):
decade = db.decade.Table.find(2020)
year = db.year.Table.insert(decade, 2021)
year = decade.find_year(2021)
self.assertIsInstance(year, db.playlist.Playlist)
self.assertEqual(year.get_property("name"), "2021")
self.assertEqual(year.get_property("year"), 2021)
@ -31,7 +31,7 @@ class TestYearTable(unittest.TestCase):
def test_insert(self):
decade = db.decade.Table.insert(2020)
year = db.year.Table.insert(decade, 2021)
year = decade.find_year(2021)
self.assertIsInstance(year, db.year.Year)
self.assertEqual(year._year, 2021)
@ -41,6 +41,6 @@ class TestYearTable(unittest.TestCase):
def test_lookup(self):
decade = db.decade.Table.find(2020)
year = db.year.Table.insert(decade, 2021)
year = decade.find_year(2021)
self.assertEqual(db.year.Table.lookup(2021), year)
self.assertIsNone(db.year.Table.lookup(2022))

View File

@ -26,8 +26,7 @@ class FileTask(Task):
album = db.album.Table.find(artist, meta.album())
disc = db.disc.Table.find(album, meta.discnumber(), meta.discsubtitle())
decade = db.decade.Table.find(meta.decade())
if (year := db.year.Table.lookup(meta.year())) == None:
year = db.year.Table.insert(decade, meta.year())
year = decade.find_year(meta.year())
track = db.track.Table.insert(self.library, artist, album, disc,
decade, year, meta.tracknumber(),
meta.length(), meta.title(),