# Copyright 2021 (c) Anna Schumaker. import datetime import lib import pathlib def new_db(): from . import sql try: return sql.execute("SELECT COUNT(*) from tracks").fetchone()[0] == 0 except: return True from . import artist from . import album from . import disc from . import genre from . import decade from . import year from . import library from . import track from . import state from . import user from . import sql def _search_table(table, key, search): if row := sql.execute(f"SELECT {key} FROM {table} " f"WHERE plstateid=?", [ search ]).fetchone(): return row[0] def find_playlist(plstateid): if playlistid := _search_table("playlists", "playlistid", plstateid): return user.Table.get(playlistid) if artistid := _search_table("artists", "artistid", plstateid): return artist.Table.get(artistid) if albumid := _search_table("albums", "albumid", plstateid): return album.Table.get(albumid) if discid := _search_table("discs", "discid", plstateid): return disc.Table.get(discid) if genreid := _search_table("genres", "genreid", plstateid): return genre.Table.get(genreid) if decadeid := _search_table("decades", "decadeid", plstateid): return decade.Table.get(decadeid) if yearid := _search_table("years", "yearid", plstateid): return year.Table.get(yearid) if libraryid := _search_table("libraries", "libraryid", plstateid): return library.Table.get(libraryid) return None def make_fake_track(trackno, length, title, path, lib="/a/b/c", art="Test Artist", alb="Test Album", disk=1, subtitle=None, yeer=2021, mnth=3, dy=18): lib = library.Table.find(pathlib.Path(lib)) art = artist.Table.find(art, art) alb = art.find_album(alb, datetime.date(yeer, mnth, dy)) disk = alb.find_disc(disk, subtitle) dec = decade.Table.find((yeer // 10) * 10) yeer = dec.find_year(yeer) return track.Table.insert(lib, art, alb, disk, dec, yeer, trackno, length, title, pathlib.Path(path)) def reset(): mods = [ track, state, user, artist, album, disc, genre, decade, year, library ] for mod in mods: mod.Table.reset() if lib.version.TESTING: reset()