From bbe461a515ff55cd6733ec0392b0a4f664499ecf Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Mon, 19 Sep 2022 12:40:21 -0400 Subject: Implement database save & load. --- qdeduper/sigdb_qt.cpp | 50 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 14 deletions(-) (limited to 'qdeduper/sigdb_qt.cpp') 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 &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 &files, int njobs) this->groups = std::move(gps); } +bool SignatureDB::valid() +{ + return sdb->valid(); +} + +void SignatureDB::scan_files(const std::vector &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); +} -- cgit v1.2.3