diff --git a/maloja/database/__init__.py b/maloja/database/__init__.py index 71c2d5e..ed40080 100644 --- a/maloja/database/__init__.py +++ b/maloja/database/__init__.py @@ -505,7 +505,9 @@ def get_performance(dbconn=None,**keys): if "track" in keys: - track_id = sqldb.get_track_id(keys['track'],dbconn=dbconn) + track_id = sqldb.get_track_id(keys['track'],create_new=False,dbconn=dbconn) + if not track_id: + raise exceptions.TrackDoesNotExist(keys['track']) #track = sqldb.get_track(track_id,dbconn=dbconn) charts = get_charts_tracks(timerange=rng,resolve_ids=False,dbconn=dbconn) rank = None @@ -514,7 +516,9 @@ def get_performance(dbconn=None,**keys): rank = c["rank"] break elif "artist" in keys: - artist_id = sqldb.get_artist_id(keys['artist'],dbconn=dbconn) + artist_id = sqldb.get_artist_id(keys['artist'],create_new=False,dbconn=dbconn) + if not artist_id: + raise exceptions.ArtistDoesNotExist(keys['artist']) #artist = sqldb.get_artist(artist_id,dbconn=dbconn) # ^this is the most useless line in programming history # but I like consistency @@ -525,7 +529,9 @@ def get_performance(dbconn=None,**keys): rank = c["rank"] break elif "album" in keys: - album_id = sqldb.get_album_id(keys['album'],dbconn=dbconn) + album_id = sqldb.get_album_id(keys['album'],create_new=False,dbconn=dbconn) + if not album_id: + raise exceptions.AlbumDoesNotExist(keys['album']) #album = sqldb.get_album(album_id,dbconn=dbconn) charts = get_charts_albums(timerange=rng,resolve_ids=False,dbconn=dbconn) rank = None @@ -688,7 +694,7 @@ def track_info(dbconn=None,**keys): if track is None: raise exceptions.MissingEntityParameter() track_id = sqldb.get_track_id(track,create_new=False,dbconn=dbconn) - if not track_id: raise exceptions.TrackDoesNotExist(track['title']) + if not track_id: raise exceptions.TrackDoesNotExist(track) track = sqldb.get_track(track_id,dbconn=dbconn) alltimecharts = get_charts_tracks(timerange=alltime(),resolve_ids=False,dbconn=dbconn) @@ -742,7 +748,7 @@ def album_info(dbconn=None,reduced=False,**keys): if album is None: raise exceptions.MissingEntityParameter() album_id = sqldb.get_album_id(album,create_new=False,dbconn=dbconn) - if not album_id: raise exceptions.AlbumDoesNotExist(album['albumtitle']) + if not album_id: raise exceptions.AlbumDoesNotExist(album) album = sqldb.get_album(album_id,dbconn=dbconn) @@ -891,7 +897,6 @@ def start_db(): dbstatus['complete'] = True # cache some stuff that we'll probably need - # (would be done anyway by start page) with sqldb.engine.connect() as dbconn: with dbconn.begin(): for week in ranges(step='week'): diff --git a/maloja/database/sqldb.py b/maloja/database/sqldb.py index de6b4e4..367007a 100644 --- a/maloja/database/sqldb.py +++ b/maloja/database/sqldb.py @@ -323,7 +323,8 @@ def album_dict_to_db(info,dbconn=None): ##### Actual Database interactions -# TODO: remove all resolve_id args and do that logic outside the caching +# TODO: remove all resolve_id args and do that logic outside the caching to improve hit chances +# TODO: maybe also factor out all intitial get entity funcs (some here, some in __init__) and throw exceptions @connection_provider def add_scrobble(scrobbledict,update_album=False,dbconn=None): @@ -836,9 +837,9 @@ def get_scrobbles_of_artist(artist,since=None,to=None,resolve_references=True,li if to is None: to=now() if associated: - artist_ids = get_associated_artists(artist,resolve_ids=False,dbconn=dbconn) + [get_artist_id(artist,dbconn=dbconn)] + artist_ids = get_associated_artists(artist,resolve_ids=False,dbconn=dbconn) + [get_artist_id(artist,create_new=False,dbconn=dbconn)] else: - artist_ids = [get_artist_id(artist,dbconn=dbconn)] + artist_ids = [get_artist_id(artist,create_new=False,dbconn=dbconn)] jointable = sql.join(DB['scrobbles'],DB['trackartists'],DB['scrobbles'].c.track_id == DB['trackartists'].c.track_id) @@ -879,7 +880,8 @@ def get_scrobbles_of_track(track,since=None,to=None,resolve_references=True,limi if since is None: since=0 if to is None: to=now() - track_id = get_track_id(track,dbconn=dbconn) + track_id = get_track_id(track,create_new=False,dbconn=dbconn) + op = DB['scrobbles'].select().where( DB['scrobbles'].c.timestamp<=to, @@ -906,7 +908,7 @@ def get_scrobbles_of_album(album,since=None,to=None,resolve_references=True,limi if since is None: since=0 if to is None: to=now() - album_id = get_album_id(album,dbconn=dbconn) + album_id = get_album_id(album,create_new=False,dbconn=dbconn) jointable = sql.join(DB['scrobbles'],DB['tracks'],DB['scrobbles'].c.track_id == DB['tracks'].c.id)