aboutsummaryrefslogtreecommitdiff
path: root/qdeduper/sigdb_qt.cpp
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2022-09-19 12:40:21 -0400
committerGravatar Chris Xiong <chirs241097@gmail.com> 2022-09-19 12:40:21 -0400
commitbbe461a515ff55cd6733ec0392b0a4f664499ecf (patch)
tree08b83459e0074c0b988cbba8b1bf6bd38c972b85 /qdeduper/sigdb_qt.cpp
parent8ec24c0ac9a0c699721c50a70630c91cc36b1c30 (diff)
downloaddeduper-bbe461a515ff55cd6733ec0392b0a4f664499ecf.tar.xz
Implement database save & load.
Diffstat (limited to 'qdeduper/sigdb_qt.cpp')
-rw-r--r--qdeduper/sigdb_qt.cpp50
1 files changed, 36 insertions, 14 deletions
diff --git a/qdeduper/sigdb_qt.cpp b/qdeduper/sigdb_qt.cpp
index c901bad..692f9c7 100644
--- a/qdeduper/sigdb_qt.cpp
+++ b/qdeduper/sigdb_qt.cpp
@@ -37,6 +37,7 @@ SignatureDB::SignatureDB() : QObject(nullptr)
SignatureDB::SignatureDB(const fs::path &dbpath) : QObject(nullptr)
{
sdb = new signature_db(dbpath);
+ create_priv_struct();
}
SignatureDB::~SignatureDB()
@@ -44,21 +45,9 @@ SignatureDB::~SignatureDB()
delete sdb;
}
-void SignatureDB::scan_files(const std::vector<fs::path> &files, int njobs)
+void SignatureDB::create_priv_struct()
{
- populate_cfg_t pcfg = {
- 3,
- 3,
- cfg_full,
- cfg_subslice,
- 0.3,
- [this](size_t c,int){Q_EMIT image_scanned(c);},
- njobs
- };
- sdb->populate(files, pcfg);
-
- Q_EMIT image_scanned(~size_t(0));
-
+ if (!valid()) return;
auto ids = sdb->get_image_ids();
sdb->batch_get_signature_begin();
for (auto &id : ids)
@@ -80,6 +69,29 @@ void SignatureDB::scan_files(const std::vector<fs::path> &files, int njobs)
this->groups = std::move(gps);
}
+bool SignatureDB::valid()
+{
+ return sdb->valid();
+}
+
+void SignatureDB::scan_files(const std::vector<fs::path> &files, int njobs)
+{
+ populate_cfg_t pcfg = {
+ 3,
+ 3,
+ cfg_full,
+ cfg_subslice,
+ 0.3,
+ [this](size_t c,int){Q_EMIT image_scanned(c);},
+ njobs
+ };
+ sdb->populate(files, pcfg);
+
+ Q_EMIT image_scanned(~size_t(0));
+
+ create_priv_struct();
+}
+
size_t SignatureDB::num_groups()
{
return groups.size();
@@ -120,3 +132,13 @@ size_t SignatureDB::get_path_id(const fs::path& p)
return ~size_t(0);
else return frmap[p];
}
+
+bool SignatureDB::load(const fs::path &p)
+{
+ return sdb->from_db_file(p);
+}
+
+bool SignatureDB::save(const fs::path &p)
+{
+ return sdb->to_db_file(p);
+}