# Copyright 2021 (c) Anna Schumaker. # # Table: libraries # +-----------+------+---------+ # | libraryid | path | enabled | # +-----------+------+---------+ import pathlib from gi.repository import GObject from . import commit from . import execute from . import objects from . import track class Library(objects.Row): def __lt__(self, rhs): return self.path < rhs.path def __gt__(self, rhs): return self.path > rhs.path def __str__(self): return str(self.path) def do_get_column(self, column): return execute(f"SELECT {column} FROM libraries " "WHERE libraryid=?", [ self.rowid ]) def tracks(self): cursor = execute(f"SELECT trackid FROM tracks " "WHERE libraryid=?", [ self.rowid ]) return [ track.Track(row["trackid"]) for row in cursor.fetchall() ] @GObject.Property def path(self): return pathlib.Path(self.get_column("path")) @GObject.Property(type=bool,default=False) def enabled(self): return bool(self.get_column("enabled")) @enabled.setter def enabled(self, newval): execute("UPDATE libraries " "SET enabled=? " "WHERE libraryid=?", [ newval, self.rowid ]) commit() class LibraryTable(objects.Table): def __init__(self): objects.Table.__init__(self, "libraries", Library) def do_create(self): execute("CREATE TABLE IF NOT EXISTS libraries " "(libraryid INTEGER PRIMARY KEY, " " path TEXT UNIQUE, " " enabled INTEGER DEFAULT 1)") def do_insert(self, path): return execute("INSERT INTO libraries (path) " "VALUES (?)", (str(path),)) def do_delete(self, library): for t in library.tracks(): track.Table.delete(t) return execute("DELETE FROM libraries WHERE libraryid=?", [ int(library) ]) def do_get(self, rowid): return execute("SELECT libraryid FROM libraries " "WHERE libraryid=?", [ rowid ]) def do_lookup(self, path): return execute("SELECT libraryid FROM libraries " "WHERE path=?", [ str(path) ]) Table = LibraryTable()