delete database function

This commit is contained in:
billypom on debian 2024-06-27 21:27:16 -04:00
parent 26bd852a3f
commit 6ad913e5ee
6 changed files with 66 additions and 18 deletions

36
main.py
View File

@ -21,8 +21,7 @@ from PyQt5.QtWidgets import (
from PyQt5.QtCore import QUrl, QTimer, Qt from PyQt5.QtCore import QUrl, QTimer, Qt
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent, QAudioProbe from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent, QAudioProbe
from PyQt5.QtGui import QCloseEvent, QPixmap from PyQt5.QtGui import QCloseEvent, QPixmap
from utils import scan_for_music from utils import scan_for_music, delete_and_create_library_database, initialize_db
from utils import delete_and_create_library_database
from components import PreferencesWindow, AudioVisualizer from components import PreferencesWindow, AudioVisualizer
# Create ui.py file from Qt Designer # Create ui.py file from Qt Designer
@ -98,10 +97,9 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
self.open_preferences self.open_preferences
) # Open preferences menu ) # Open preferences menu
# QUICK ACTIONS MENU # QUICK ACTIONS MENU
self.actionScanLibraries.triggered.connect(self.scan_libraries) # Scan library self.actionScanLibraries.triggered.connect(self.scan_libraries)
self.actionClearDatabase.triggered.connect( self.actionDeleteLibrary.triggered.connect(self.clear_database)
self.clear_database self.actionDeleteDatabase.triggered.connect(self.delete_database)
) # Clear database
## tableView triggers ## tableView triggers
self.tableView.doubleClicked.connect( self.tableView.doubleClicked.connect(
self.play_audio_file self.play_audio_file
@ -364,6 +362,32 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
delete_and_create_library_database() delete_and_create_library_database()
self.tableView.fetch_library() self.tableView.fetch_library()
def delete_database(self) -> None:
"""Deletes the entire database"""
reply = QMessageBox.question(
self,
"Confirmation",
"Delete database?",
QMessageBox.Yes | QMessageBox.No,
QMessageBox.Yes,
)
if reply:
initialize_db()
self.tableView.fetch_library()
def reinitialize_database(self) -> None:
"""Clears all tables in database and recreates"""
reply = QMessageBox.question(
self,
"Confirmation",
"Recreate the database?",
QMessageBox.Yes | QMessageBox.No,
QMessageBox.Yes,
)
if reply:
initialize_db()
self.tableView.fetch_library()
def process_probe(self, buff) -> None: def process_probe(self, buff) -> None:
buff.startTime() buff.startTime()
self.update_audio_visualization() self.update_audio_visualization()

14
ui.py
View File

@ -154,7 +154,7 @@ class Ui_MainWindow(object):
self.verticalLayout_3.setStretch(3, 1) self.verticalLayout_3.setStretch(3, 1)
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 21)) self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 41))
self.menubar.setObjectName("menubar") self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile") self.menuFile.setObjectName("menuFile")
@ -172,14 +172,17 @@ class Ui_MainWindow(object):
self.actionPreferences.setObjectName("actionPreferences") self.actionPreferences.setObjectName("actionPreferences")
self.actionScanLibraries = QtWidgets.QAction(MainWindow) self.actionScanLibraries = QtWidgets.QAction(MainWindow)
self.actionScanLibraries.setObjectName("actionScanLibraries") self.actionScanLibraries.setObjectName("actionScanLibraries")
self.actionClearDatabase = QtWidgets.QAction(MainWindow) self.actionDeleteLibrary = QtWidgets.QAction(MainWindow)
self.actionClearDatabase.setObjectName("actionClearDatabase") self.actionDeleteLibrary.setObjectName("actionDeleteLibrary")
self.actionOpenFiles = QtWidgets.QAction(MainWindow) self.actionOpenFiles = QtWidgets.QAction(MainWindow)
self.actionOpenFiles.setObjectName("actionOpenFiles") self.actionOpenFiles.setObjectName("actionOpenFiles")
self.actionDeleteDatabase = QtWidgets.QAction(MainWindow)
self.actionDeleteDatabase.setObjectName("actionDeleteDatabase")
self.menuFile.addAction(self.actionOpenFiles) self.menuFile.addAction(self.actionOpenFiles)
self.menuEdit.addAction(self.actionPreferences) self.menuEdit.addAction(self.actionPreferences)
self.menuQuick_Actions.addAction(self.actionScanLibraries) self.menuQuick_Actions.addAction(self.actionScanLibraries)
self.menuQuick_Actions.addAction(self.actionClearDatabase) self.menuQuick_Actions.addAction(self.actionDeleteLibrary)
self.menuQuick_Actions.addAction(self.actionDeleteDatabase)
self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuEdit.menuAction()) self.menubar.addAction(self.menuEdit.menuAction())
self.menubar.addAction(self.menuView.menuAction()) self.menubar.addAction(self.menuView.menuAction())
@ -207,7 +210,8 @@ class Ui_MainWindow(object):
self.actionPreferences.setText(_translate("MainWindow", "Preferences")) self.actionPreferences.setText(_translate("MainWindow", "Preferences"))
self.actionPreferences.setStatusTip(_translate("MainWindow", "Open preferences")) self.actionPreferences.setStatusTip(_translate("MainWindow", "Open preferences"))
self.actionScanLibraries.setText(_translate("MainWindow", "Scan libraries")) self.actionScanLibraries.setText(_translate("MainWindow", "Scan libraries"))
self.actionClearDatabase.setText(_translate("MainWindow", "Clear Database")) self.actionDeleteLibrary.setText(_translate("MainWindow", "Delete Library"))
self.actionOpenFiles.setText(_translate("MainWindow", "Open file(s)")) self.actionOpenFiles.setText(_translate("MainWindow", "Open file(s)"))
self.actionDeleteDatabase.setText(_translate("MainWindow", "Delete Database"))
from components import AlbumArtGraphicsView, MusicTable from components import AlbumArtGraphicsView, MusicTable
from pyqtgraph import PlotWidget from pyqtgraph import PlotWidget

14
ui.ui
View File

@ -274,7 +274,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1152</width> <width>1152</width>
<height>21</height> <height>41</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuFile"> <widget class="QMenu" name="menuFile">
@ -299,7 +299,8 @@
<string>Quick-Actions</string> <string>Quick-Actions</string>
</property> </property>
<addaction name="actionScanLibraries"/> <addaction name="actionScanLibraries"/>
<addaction name="actionClearDatabase"/> <addaction name="actionDeleteLibrary"/>
<addaction name="actionDeleteDatabase"/>
</widget> </widget>
<addaction name="menuFile"/> <addaction name="menuFile"/>
<addaction name="menuEdit"/> <addaction name="menuEdit"/>
@ -320,9 +321,9 @@
<string>Scan libraries</string> <string>Scan libraries</string>
</property> </property>
</action> </action>
<action name="actionClearDatabase"> <action name="actionDeleteLibrary">
<property name="text"> <property name="text">
<string>Clear Database</string> <string>Delete Library</string>
</property> </property>
</action> </action>
<action name="actionOpenFiles"> <action name="actionOpenFiles">
@ -330,6 +331,11 @@
<string>Open file(s)</string> <string>Open file(s)</string>
</property> </property>
</action> </action>
<action name="actionDeleteDatabase">
<property name="text">
<string>Delete Database</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View File

@ -1,4 +1,5 @@
from .id3_timestamp_to_datetime import id3_timestamp_to_datetime from .id3_timestamp_to_datetime import id3_timestamp_to_datetime
from .initialize_db import initialize_db
from .safe_get import safe_get from .safe_get import safe_get
from .get_album_art import get_album_art from .get_album_art import get_album_art
from .get_id3_tags import get_id3_tags from .get_id3_tags import get_id3_tags

View File

@ -1,9 +1,11 @@
import DBA import DBA
def delete_and_create_library_database(): def delete_and_create_library_database():
with open('utils/delete_and_create_library.sql', 'r') as file: """Clears all songs in database"""
with open("utils/delete_and_create_library.sql", "r") as file:
lines = file.read() lines = file.read()
for statement in lines.split(';'): for statement in lines.split(";"):
print(f'executing [{statement}]') print(f"executing [{statement}]")
with DBA.DBAccess() as db: with DBA.DBAccess() as db:
db.execute(statement, ()) db.execute(statement, ())

11
utils/initialize_db.py Normal file
View File

@ -0,0 +1,11 @@
import DBA
def initialize_db():
"""Recreates everything in the database"""
with open("utils/init.sql", "r") as file:
lines = file.read()
for statement in lines.split(";"):
print(f"executing [{statement}]")
with DBA.DBAccess() as db:
db.execute(statement, ())