db: Give Years a PlaylistState property
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
6fbc5e0b27
commit
8a0364760d
|
@ -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)
|
||||
|
|
22
db/year.py
22
db/year.py
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue