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.QtMultimedia import QMediaPlayer, QMediaContent, QAudioProbe
from PyQt5.QtGui import QCloseEvent, QPixmap
from utils import scan_for_music
from utils import delete_and_create_library_database
from utils import scan_for_music, delete_and_create_library_database, initialize_db
from components import PreferencesWindow, AudioVisualizer
# Create ui.py file from Qt Designer
@ -98,10 +97,9 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
self.open_preferences
) # Open preferences menu
# QUICK ACTIONS MENU
self.actionScanLibraries.triggered.connect(self.scan_libraries) # Scan library
self.actionClearDatabase.triggered.connect(
self.clear_database
) # Clear database
self.actionScanLibraries.triggered.connect(self.scan_libraries)
self.actionDeleteLibrary.triggered.connect(self.clear_database)
self.actionDeleteDatabase.triggered.connect(self.delete_database)
## tableView triggers
self.tableView.doubleClicked.connect(
self.play_audio_file
@ -364,6 +362,32 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
delete_and_create_library_database()
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:
buff.startTime()
self.update_audio_visualization()

14
ui.py
View File

@ -154,7 +154,7 @@ class Ui_MainWindow(object):
self.verticalLayout_3.setStretch(3, 1)
MainWindow.setCentralWidget(self.centralwidget)
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.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
@ -172,14 +172,17 @@ class Ui_MainWindow(object):
self.actionPreferences.setObjectName("actionPreferences")
self.actionScanLibraries = QtWidgets.QAction(MainWindow)
self.actionScanLibraries.setObjectName("actionScanLibraries")
self.actionClearDatabase = QtWidgets.QAction(MainWindow)
self.actionClearDatabase.setObjectName("actionClearDatabase")
self.actionDeleteLibrary = QtWidgets.QAction(MainWindow)
self.actionDeleteLibrary.setObjectName("actionDeleteLibrary")
self.actionOpenFiles = QtWidgets.QAction(MainWindow)
self.actionOpenFiles.setObjectName("actionOpenFiles")
self.actionDeleteDatabase = QtWidgets.QAction(MainWindow)
self.actionDeleteDatabase.setObjectName("actionDeleteDatabase")
self.menuFile.addAction(self.actionOpenFiles)
self.menuEdit.addAction(self.actionPreferences)
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.menuEdit.menuAction())
self.menubar.addAction(self.menuView.menuAction())
@ -207,7 +210,8 @@ class Ui_MainWindow(object):
self.actionPreferences.setText(_translate("MainWindow", "Preferences"))
self.actionPreferences.setStatusTip(_translate("MainWindow", "Open preferences"))
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.actionDeleteDatabase.setText(_translate("MainWindow", "Delete Database"))
from components import AlbumArtGraphicsView, MusicTable
from pyqtgraph import PlotWidget

14
ui.ui
View File

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

View File

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

View File

@ -1,9 +1,11 @@
import DBA
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()
for statement in lines.split(';'):
print(f'executing [{statement}]')
for statement in lines.split(";"):
print(f"executing [{statement}]")
with DBA.DBAccess() as db:
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, ())