# Copyright 2021 (c) Anna Schumaker. # # Table: years # +--------+----------+------+ # | yearid | decadeid | year | # +--------+----------+------+ from gi.repository import GObject from . import decade from . import execute from . import objects 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 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, " " year INTEGER UNIQUE, " " FOREIGN KEY(decadeid) REFERENCES decades(decadeid))") def do_insert(self, year): dec = decade.Table.find( (year // 10) * 10) return execute("INSERT INTO years (decadeid, year) " "VALUES (?, ?)", (int(dec), year)) def do_delete(self, year): 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()