From 9a6cda7aab4b5d3ba42e1972aa8c44330a77fcaa Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 22 Aug 2021 16:33:36 -0400 Subject: [PATCH] db: Give Decades a PlaylistState property Signed-off-by: Anna Schumaker --- db/decade.py | 21 +++++++++++++++------ db/test_decade.py | 6 +++++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/db/decade.py b/db/decade.py index 053ff3c..78fddf6 100644 --- a/db/decade.py +++ b/db/decade.py @@ -1,12 +1,13 @@ # Copyright 2021 (c) Anna Schumaker. # # Table: decades -# +----------+--------+ -# | decadeid | decade | -# +----------+--------+ +# +----------+-----------+--------+ +# | decadeid | plstateid | decade | +# +----------+-----------+--------+ from gi.repository import GObject from . import execute from . import objects +from . import state from . import year class Decade(objects.Row): @@ -27,6 +28,10 @@ class Decade(objects.Row): def decade(self): return self.get_column("decade") + @GObject.Property + def playlist_state(self): + return state.PlaylistState(self.get_column("plstateid")) + class DecadeTable(objects.Table): def __init__(self): @@ -35,13 +40,17 @@ class DecadeTable(objects.Table): def do_create(self): execute("CREATE TABLE IF NOT EXISTS decades " "(decadeid INTEGER PRIMARY KEY, " - " decade INTEGER UNIQUE)") + " plstateid INTEGER NOT NULL, " + " decade INTEGER UNIQUE, " + " FOREIGN KEY(plstateid) REFERENCES playlist_states(plstateid))") def do_insert(self, decade): - return execute("INSERT INTO decades (decade) " - "VALUES (?)", (decade,)) + plstate = state.Table.insert(random=False, loop=False) + return execute("INSERT INTO decades (plstateid,decade) " + "VALUES (?, ?)", [ int(plstate), decade ]) def do_delete(self, decade): + state.Table.delete(decade.playlist_state) return execute("DELETE FROM decades WHERE decadeid=?", [ int(decade) ]) def do_get(self, rowid): diff --git a/db/test_decade.py b/db/test_decade.py index 275e8e0..a56ada4 100644 --- a/db/test_decade.py +++ b/db/test_decade.py @@ -11,7 +11,7 @@ class TestDecadeTable(unittest.TestCase): def test_decade_table_init(self): self.assertIsInstance(db.decade.Table, db.decade.DecadeTable) - db.execute("SELECT decadeid,decade FROM decades") + db.execute("SELECT decadeid,plstateid,decade FROM decades") def test_decade_table_insert(self): decade = db.decade.Table.insert(2020) @@ -21,14 +21,18 @@ class TestDecadeTable(unittest.TestCase): self.assertEqual(decade.decade, 2020) self.assertEqual(str(decade), "2020s") + self.assertIsInstance(decade.playlist_state, db.state.PlaylistState) with self.assertRaises(sqlite3.IntegrityError): db.decade.Table.insert(2020) def test_decade_table_delete(self): decade = db.decade.Table.find(2020) + state = decade.playlist_state + db.decade.Table.delete(decade) self.assertIsNone(db.decade.Table.lookup(2020)) + self.assertIsNone(db.state.Table.get(int(state))) def test_decade_table_get(self): decade = db.decade.Table.insert(2020)