added push method to sync db objects, needs to be implemented
This commit is contained in:
parent
0744cc8606
commit
7ac5b8a6d3
19
src/goof.py
19
src/goof.py
@ -1,5 +1,23 @@
|
|||||||
import music_kraken
|
import music_kraken
|
||||||
|
|
||||||
|
import music_kraken.database.new_database as db
|
||||||
|
|
||||||
|
cache = music_kraken.database.new_database.Database("test.db")
|
||||||
|
cache.reset()
|
||||||
|
|
||||||
|
artist = music_kraken.Artist(
|
||||||
|
name="I'm in a Coffin"
|
||||||
|
)
|
||||||
|
|
||||||
|
song = music_kraken.Song(
|
||||||
|
title="Vein Deep in the Solution",
|
||||||
|
release="One Final Action",
|
||||||
|
artists=[artist]
|
||||||
|
)
|
||||||
|
|
||||||
|
cache.push([artist, song])
|
||||||
|
|
||||||
|
"""
|
||||||
music_kraken.clear_cache()
|
music_kraken.clear_cache()
|
||||||
|
|
||||||
artist = music_kraken.Artist(
|
artist = music_kraken.Artist(
|
||||||
@ -16,3 +34,4 @@ print(song)
|
|||||||
print(song.id)
|
print(song.id)
|
||||||
|
|
||||||
# music_kraken.fetch_sources([song])
|
# music_kraken.fetch_sources([song])
|
||||||
|
"""
|
||||||
|
@ -1,13 +1,23 @@
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
|
from typing import List
|
||||||
|
from pkg_resources import resource_string
|
||||||
|
|
||||||
|
from .song import (
|
||||||
|
Song,
|
||||||
|
Lyrics,
|
||||||
|
Metadata,
|
||||||
|
Target,
|
||||||
|
Artist,
|
||||||
|
Source
|
||||||
|
)
|
||||||
|
|
||||||
logger = logging.getLogger("database")
|
logger = logging.getLogger("database")
|
||||||
|
|
||||||
|
|
||||||
class Database:
|
class Database:
|
||||||
def __init__(self, structure_file: str, database_file: str):
|
def __init__(self, database_file: str):
|
||||||
self.structure_file: str = structure_file
|
|
||||||
self.database_file: str = database_file
|
self.database_file: str = database_file
|
||||||
|
|
||||||
self.connection = sqlite3.connect(self.database_file)
|
self.connection = sqlite3.connect(self.database_file)
|
||||||
@ -18,7 +28,7 @@ class Database:
|
|||||||
Deletes all Data from the database if it exists
|
Deletes all Data from the database if it exists
|
||||||
and resets the schema defined in self.structure_file
|
and resets the schema defined in self.structure_file
|
||||||
"""
|
"""
|
||||||
logger.info(f"resetting the database \"{self.__name__}\"")
|
logger.info(f"resetting the database")
|
||||||
|
|
||||||
# deleting the database
|
# deleting the database
|
||||||
del self.connection
|
del self.connection
|
||||||
@ -28,10 +38,56 @@ class Database:
|
|||||||
# newly creating the database
|
# newly creating the database
|
||||||
self.connection = sqlite3.connect(self.database_file)
|
self.connection = sqlite3.connect(self.database_file)
|
||||||
self.cursor = self.connection.cursor()
|
self.cursor = self.connection.cursor()
|
||||||
with open(self.structure_file, "r") as structure_file_obj:
|
query = resource_string("music_kraken", "static_files/new_db.sql").decode('utf-8')
|
||||||
query = structure_file_obj.read()
|
|
||||||
|
|
||||||
# fill the database with the schematic
|
# fill the database with the schematic
|
||||||
self.cursor.executescript(query)
|
self.cursor.executescript(query)
|
||||||
self.connection.commit()
|
self.connection.commit()
|
||||||
|
|
||||||
|
def push_one(self, db_object: Song | Lyrics | Target | Artist | Source):
|
||||||
|
if type(db_object) == Song:
|
||||||
|
return self.push_song(song=db_object)
|
||||||
|
|
||||||
|
if type(db_object) == Lyrics:
|
||||||
|
return self.push_lyrics(lyrics=db_object)
|
||||||
|
|
||||||
|
if type(db_object) == Target:
|
||||||
|
return self.push_target(target=db_object)
|
||||||
|
|
||||||
|
if type(db_object) == Artist:
|
||||||
|
return self.push_artist(artist=db_object)
|
||||||
|
|
||||||
|
if type(db_object) == Source:
|
||||||
|
return self.push_source(source=db_object)
|
||||||
|
|
||||||
|
def push(self, db_object_list: List[Song | Lyrics | Target | Artist | Source]):
|
||||||
|
"""
|
||||||
|
This function is used to Write the data of any db_object to the database
|
||||||
|
|
||||||
|
It syncs a whole list of db_objects to the database and is meant
|
||||||
|
as the primary method to add to the database.
|
||||||
|
|
||||||
|
:param db_object_list:
|
||||||
|
"""
|
||||||
|
|
||||||
|
for db_object in db_object_list:
|
||||||
|
self.push_one(db_object)
|
||||||
|
|
||||||
|
def push_song(self, song: Song):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def push_lyrics(self, lyrics: Lyrics):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def push_target(self, target: Target):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def push_artist(self, artist: Artist):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def push_source(self, source: Source):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
cache = Database("")
|
||||||
|
@ -40,10 +40,6 @@ CREATE TABLE Lyrics
|
|||||||
FOREIGN KEY(song_id) REFERENCES Song(id)
|
FOREIGN KEY(song_id) REFERENCES Song(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE EasyId3
|
|
||||||
(
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE SongArtist
|
CREATE TABLE SongArtist
|
||||||
(
|
(
|
||||||
song_id BIGINT,
|
song_id BIGINT,
|
||||||
|
Loading…
Reference in New Issue
Block a user