# Copyright 2021 (c) Anna Schumaker. # # Table: years # +--------+----------+-----------+------+ # | 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 def __lt__(self, rhs): return self.year < rhs.year def __str__(self): return str(self.year) def do_get_column(self, column): return execute(f"SELECT {column} FROM years " "WHERE yearid=?", [ self.rowid ]) @GObject.Property 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") class YearTable(objects.Table): def __init__(self): objects.Table.__init__(self, "years", Year) def do_create(self): 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(plstateid) REFERENCES playlist_states(plstateid))") def do_insert(self, year): dec = decade.Table.find( (year // 10) * 10) 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): return execute("SELECT yearid FROM years " "WHERE yearid=?", [ rowid ]) def do_lookup(self, year): return execute("SELECT yearid FROM years " "WHERE year=?", [ year ]) Table = YearTable()