Mungai Geoffrey 4302fea0b7
Move MongoDB classes into a seperate db module (#62)
* move album class into mongodb dir

* inherit AlbumMethods at DB Initialization level

* move album -> db/mongodb

* move mongodb classes into separate package
2022-06-04 10:57:36 +03:00

81 lines
1.9 KiB
Python

"""
This module creates and initiliazes a MongoDB instance. It also contains the
`convert_one()` and `conver_many()` methods for converting MongoDB cursors to Python dicts.
"""
import json
import pymongo
from app.db import AlbumMethods
from app.db import ArtistMethods
from app.db import PlaylistMethods
from app.db import TrackMethods
from bson import json_util
class Mongo:
"""
The base class for all mongodb classes.
"""
def __init__(self, database):
mongo_uri = pymongo.MongoClient()
self.db = mongo_uri[database]
class MongoAlbums(Mongo, AlbumMethods):
def __init__(self):
super(MongoAlbums, self).__init__("ALICE_ALBUMS")
self.collection = self.db["ALL_ALBUMS"]
class MongoArtists(Mongo, ArtistMethods):
def __init__(self):
super(MongoArtists, self).__init__("ALICE_ARTISTS")
self.collection = self.db["ALL_ARTISTS"]
class MongoPlaylists(Mongo, PlaylistMethods):
def __init__(self):
super(MongoPlaylists, self).__init__("ALICE_PLAYLISTS")
self.collection = self.db["ALL_PLAYLISTS"]
class MongoTracks(Mongo, TrackMethods):
def __init__(self):
super(MongoTracks, self).__init__("ALICE_MUSIC_TRACKS")
self.collection = self.db["ALL_TRACKS"]
# ====================================================================== #
# cursor convertion methods
def convert_one(song):
"""
Converts a single mongodb cursor to a json object.
"""
json_song = json.dumps(song, default=json_util.default)
loaded_song = json.loads(json_song)
return loaded_song
def convert_many(array):
"""
Converts a list of mongodb cursors to a list of json objects.
"""
songs = []
for song in array:
json_song = json.dumps(song, default=json_util.default)
loaded_song = json.loads(json_song)
songs.append(loaded_song)
return songs