Files
swingmusic-extended/server/app/db/albums.py
T
geoffrey45 d98cc0547e Save complete tracks and albums to the db for faster startup
- refactor function locations
- add logger
- check for new tracks instead of re-processing all files
2022-04-21 10:16:45 +03:00

65 lines
1.7 KiB
Python

"""
This file contains the Album class for interacting with
album documents in MongoDB.
"""
from app import db
from bson import ObjectId
from app.models import Album
convert_many = db.convert_many
convert_one = db.convert_one
class Albums(db.Mongo):
"""
The class for all album-related database operations.
"""
def __init__(self):
super(Albums, self).__init__("ALICE_ALBUMS")
self.collection = self.db["ALL_ALBUMS"]
def insert_album(self, album: Album) -> None:
"""
Inserts a new album object into the database.
"""
return self.collection.update_one(
{
"album": album["title"],
"artist": album["artist"]
},
{
"$set": album
},
upsert=True,
).upserted_id
def get_all_albums(self) -> list:
"""
Returns all the albums in the database.
"""
albums = self.collection.find()
return convert_many(albums)
def get_album_by_id(self, id: str) -> dict:
"""
Returns a single album matching the id in the query params.
"""
album = self.collection.find_one({"_id": ObjectId(id)})
return convert_one(album)
def get_album_by_name(self, name: str, artist: str) -> dict:
"""
Returns a single album matching the name in the query params.
"""
album = self.collection.find_one({"album": name, "artist": artist})
return convert_one(album)
def get_album_by_artist(self, name: str) -> dict:
"""
Returns a single album matching the artist in the query params.
"""
album = self.collection.find_one({"albumartist": name})
return convert_one(album)