mirror of
https://github.com/Dvorinka/swingmusic-extended.git
synced 2026-06-04 20:43:04 +00:00
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
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
"""
|
||||
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
|
||||
Reference in New Issue
Block a user