# Copyright 2021 (c) Anna Schumaker. # # Table: artists # +----------+-----------+------+------+ # | artistid | plstateid | name | sort | # +----------+-----------+------+------+ from gi.repository import GObject from . import album from . import playlist from . import sql class Artist(playlist.ParentPlaylist): def __init__(self, row): playlist.ParentPlaylist.__init__(self, row, "avatar-default-symbolic") self._name = row["name"] @GObject.Property def name(self): return self._name def delete(self): Table.delete(self) def find_album(self, name, release): return self.find_child(name, release) def get_child_table(self): return album.Table class ArtistTable(playlist.Model): def __init__(self): playlist.Model.__init__(self, "artists", "sort") def do_create(self): sql.execute("CREATE TABLE IF NOT EXISTS artists " "(artistid INTEGER PRIMARY KEY, " " plstateid INTEGER NOT NULL, " " name TEXT UNIQUE, " " sort TEXT, " " FOREIGN KEY(plstateid) REFERENCES playlist_states(plstateid))") def do_factory(self, row): return Artist(row) def do_insert(self, plstate, name, sort): return sql.execute("INSERT INTO artists (plstateid, name, sort) " "VALUES (?, ?, ?)", [ plstate.rowid, name, sort.casefold() ]) def do_lookup(self, name): return sql.execute("SELECT * FROM artists WHERE name=?", [ name ]) def find(self, name, sort): return res if (res := self.lookup(name)) else self.insert(name, sort) Table = ArtistTable()