From f8fd9b8c6d626397f5e6de4c3c0da927612e5770 Mon Sep 17 00:00:00 2001 From: tastytea Date: Thu, 28 Nov 2019 05:09:14 +0100 Subject: [PATCH] Add text_to_string(). --- include/sqlite.hpp | 8 ++++++++ src/lib/export/csv.cpp | 11 +---------- src/lib/sqlite.cpp | 27 +++++++++++++++++---------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/include/sqlite.hpp b/include/sqlite.hpp index 71f07ca..5636f73 100644 --- a/include/sqlite.hpp +++ b/include/sqlite.hpp @@ -118,6 +118,14 @@ public: */ size_t remove(const string &uri); + /*! + * @brief Returns tags as comma separated string. + * + * @since 0.9.0 + */ + [[nodiscard]] + static string tags_to_string(const vector &tags); + private: fs::path _dbpath; std::unique_ptr _session; diff --git a/src/lib/export/csv.cpp b/src/lib/export/csv.cpp index 4aae58b..ac3a8d1 100644 --- a/src/lib/export/csv.cpp +++ b/src/lib/export/csv.cpp @@ -30,19 +30,10 @@ void Export::CSV::print() const << R"("Title","Description","Full text")" << "\r\n"; for (const Database::entry &entry : _entries) { - string strtags; - for (const string &tag : entry.tags) - { - strtags += tag; - if (tag != *(entry.tags.rbegin())) - { - strtags += ","; - } - } _out << '"' << quote(entry.uri) << "\",\"" << quote(entry.archive_uri) << "\",\"" << timepoint_to_string(entry.datetime) << "\",\"" - << quote(strtags) << "\",\"" + << quote(Database::tags_to_string(entry.tags)) << "\",\"" << quote(entry.title) << "\",\"" << quote(entry.description) << "\",\"" << quote(entry.fulltext_oneline()) << '"'<< "\r\n"; diff --git a/src/lib/sqlite.cpp b/src/lib/sqlite.cpp index 4da32af..e842869 100644 --- a/src/lib/sqlite.cpp +++ b/src/lib/sqlite.cpp @@ -84,18 +84,9 @@ void Database::store(const Database::entry &data) const try { const string strdatetime = timepoint_to_string(data.datetime, true); - string strtags; + string strtags = tags_to_string(data.tags); Statement insert(*_session); - for (const string &tag : data.tags) - { - strtags += tag; - if (tag != *(data.tags.rbegin())) - { - strtags += ","; - } - } - // useRef() uses the const reference. insert << "INSERT INTO remwharead " "VALUES(?, ?, ?, ?, ?, ?, ?);", @@ -175,6 +166,22 @@ size_t Database::remove(const string &uri) return del.execute(); } +string Database::tags_to_string(const vector &tags) +{ + string strtags; + + for (const string &tag : tags) + { + strtags += tag; + if (tag != *(tags.rbegin())) + { + strtags += ','; + } + } + + return strtags; +} + fs::path Database::get_data_home() const { fs::path path;