From 481609e81a830a947824a626e72db0c06c021eab Mon Sep 17 00:00:00 2001 From: Julian Freeman Date: Fri, 19 Jul 2024 17:25:28 -0400 Subject: [PATCH] =?UTF-8?q?dev:=20=E5=A2=9E=E5=8A=A0=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=97=A0=E6=95=88=E6=96=87=E4=BB=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/db_columns_def.py | 2 ++ src/page_similar.py | 25 +++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/db_columns_def.py b/lib/db_columns_def.py index f6db594..0ec1de8 100644 --- a/lib/db_columns_def.py +++ b/lib/db_columns_def.py @@ -39,3 +39,5 @@ sim_columns = [ columns_d["uuid"], columns_d["filepath"], ] + +filepath_col = columns_d["filepath"] diff --git a/src/page_similar.py b/src/page_similar.py index d088f0e..e70b91d 100644 --- a/src/page_similar.py +++ b/src/page_similar.py @@ -4,8 +4,11 @@ from uuid import UUID from PySide6 import QtWidgets, QtCore from PySide6.QtCore import QAbstractTableModel -from lib.Sqlite3Helper import Sqlite3Worker -from lib.db_columns_def import sim_columns +from .utils import accept_warning +from lib.Sqlite3Helper import Sqlite3Worker, Operand +from lib.db_columns_def import sim_columns, filepath_col +from lib.config_utils import path_not_exist +from lib.kps_operations import blob_fy class SimilarDataModel(QAbstractTableModel): @@ -54,12 +57,17 @@ class PageSimilar(QtWidgets.QWidget): self.pbn_read_db.setMinimumWidth(config["button_min_width"]) self.vly_left.addWidget(self.pbn_read_db) + self.pbn_delete_invalid_data = QtWidgets.QPushButton("删除无效文件数据", self) + self.pbn_delete_invalid_data.setMinimumWidth(config["button_min_width"]) + self.vly_left.addWidget(self.pbn_delete_invalid_data) + self.vly_left.addStretch(1) self.tbv_m = QtWidgets.QTableView(self) self.hly_m.addWidget(self.tbv_m) self.pbn_read_db.clicked.connect(self.on_pbn_read_db_clicked) + self.pbn_delete_invalid_data.clicked.connect(self.on_pbn_delete_invalid_data_clicked) def on_pbn_read_db_clicked(self): _, results = self.sqh.select(self.config["table_name"], sim_columns) @@ -90,3 +98,16 @@ class PageSimilar(QtWidgets.QWidget): model = SimilarDataModel(similar_data, self) self.tbv_m.setModel(model) + + def on_pbn_delete_invalid_data_clicked(self): + if accept_warning(self, True, "警告", "你确定要从数据库删除无效文件的记录吗?"): + return + + _, filepaths = self.sqh.select(self.config["table_name"], [filepath_col,]) + unique_filepaths = set([p[0].decode("utf8") for p in filepaths]) + invalid_filepaths = [p for p in unique_filepaths if path_not_exist(p)] + for path in invalid_filepaths: + self.sqh.delete_from(self.config["table_name"], + where=Operand(filepath_col).equal_to(blob_fy(path)), + commit=False) + self.sqh.commit()