db: Give Years a PlaylistState property

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-08-22 18:02:00 -04:00
parent 6fbc5e0b27
commit 8a0364760d
2 changed files with 20 additions and 7 deletions

View File

@ -11,7 +11,7 @@ class TestYearTable(unittest.TestCase):
def test_year_table_init(self):
self.assertIsInstance(db.year.Table, db.year.YearTable)
db.execute("SELECT yearid,decadeid,year FROM years")
db.execute("SELECT yearid,decadeid,plstateid,year FROM years")
def test_year_table_insert(self):
decade = db.decade.Table.insert(2020)
@ -23,14 +23,17 @@ class TestYearTable(unittest.TestCase):
self.assertEqual(year.year, 2021)
self.assertEqual(str(year), "2021")
self.assertEqual(year.get_property("decade"), decade)
self.assertIsInstance(year.playlist_state, db.state.PlaylistState)
with self.assertRaises(sqlite3.IntegrityError):
db.year.Table.insert(2021)
def test_year_table_delete(self):
year = db.year.Table.find(2021)
state = year.playlist_state
db.year.Table.delete(year)
self.assertIsNone(db.year.Table.lookup(2021))
self.assertIsNone(db.state.Table.get(int(state)))
def test_year_table_get(self):
year = db.year.Table.insert(2021)

View File

@ -1,13 +1,14 @@
# Copyright 2021 (c) Anna Schumaker.
#
# Table: years
# +--------+----------+------+
# | yearid | decadeid | year |
# +--------+----------+------+
# +--------+----------+-----------+------+
# | yearid | decadeid | plstateid | year |
# +--------+----------+-----------+------+
from gi.repository import GObject
from . import decade
from . import execute
from . import objects
from . import state
class Year(objects.Row):
def __gt__(self, rhs): return self.year > rhs.year
@ -22,6 +23,10 @@ class Year(objects.Row):
def decade(self):
return decade.Decade(self.get_column("decadeid"))
@GObject.Property
def playlist_state(self):
return state.PlaylistState(self.get_column("plstateid"))
@GObject.Property
def year(self):
return self.get_column("year")
@ -35,15 +40,20 @@ class YearTable(objects.Table):
execute("CREATE TABLE IF NOT EXISTS years "
"(yearid INTEGER PRIMARY KEY, "
" decadeid INTEGER, "
" plstateid INTEGER NOT NULL, "
" year INTEGER UNIQUE, "
" FOREIGN KEY(decadeid) REFERENCES decades(decadeid))")
" FOREIGN KEY(decadeid) REFERENCES decades(decadeid), "
" FOREIGN KEY(plstateid) REFERENCES playlist_states(plstateid))")
def do_insert(self, year):
dec = decade.Table.find( (year // 10) * 10)
return execute("INSERT INTO years (decadeid, year) "
"VALUES (?, ?)", (int(dec), year))
plstate = state.Table.insert(random=False, loop=False)
return execute("INSERT INTO years (decadeid, plstateid, year) "
"VALUES (?, ?, ?)",
[ int(dec), int(plstate), year ])
def do_delete(self, year):
state.Table.delete(year.playlist_state)
return execute("DELETE FROM years WHERE yearid=?", [ int(year) ])
def do_get(self, rowid):