remwharead  0.9.1
search.hpp
1 /* This file is part of remwharead.
2  * Copyright © 2019 tastytea <tastytea@tastytea.de>
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #ifndef REMWHAREAD_SEARCH_HPP
18 #define REMWHAREAD_SEARCH_HPP
19 
20 #include "sqlite.hpp"
21 #include <list>
22 #include <string>
23 #include <vector>
24 
25 namespace remwharead
26 {
27 using std::list;
28 using std::string;
29 using std::vector;
30 
38 class Search
39 {
40 public:
46  explicit Search(list<Database::entry> entries);
47 
60  [[nodiscard]]
61  list<Database::entry> search_tags(const string &expression, bool is_re)
62  const;
63 
76  [[nodiscard]]
77  list<Database::entry> search_all(const string &expression, bool is_re)
78  const;
79 
93  // TODO(tastytea): Think of something more elegant.
94  [[nodiscard]]
95  list<Database::entry> search_all_threaded(const string &expression,
96  bool is_re) const;
97 
98 private:
99  const list<Database::entry> _entries;
100 
112  [[nodiscard]]
113  vector<vector<string>> parse_expression(const string &expression) const;
114 
120  [[nodiscard]]
121  inline string to_lowercase(const string &str) const;
122 };
123 } // namespace remwharead
124 
125 #endif // REMWHAREAD_SEARCH_HPP
list< Database::entry > search_tags(const string &expression, bool is_re) const
Search in tags of database entries.
Definition: search.cpp:86
list< Database::entry > search_all(const string &expression, bool is_re) const
Search in full text of database entries.
Definition: search.cpp:128
Search in database entries.
Definition: search.hpp:38
list< Database::entry > search_all_threaded(const string &expression, bool is_re) const
Spawn threads of search_all(), if it seems sensible.
Definition: search.cpp:204
Search(list< Database::entry > entries)
Defines the entries to search.
Definition: search.cpp:36