Skip to content

Commit

Permalink
fixup! Introduce SearchInfo.
Browse files Browse the repository at this point in the history
  • Loading branch information
mgautierfr committed Mar 29, 2022
1 parent 8113656 commit eee7b95
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 10 deletions.
17 changes: 8 additions & 9 deletions src/server/internalServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,29 +111,29 @@ unsigned int getCacheLength(const char* name, unsigned int defaultVal) {

SearchInfo::SearchInfo(const std::string& pattern)
: pattern(pattern),
geoQuery{false, {0, 0, 0}}
geoQuery()
{}

SearchInfo::SearchInfo(const std::string& pattern, GeoQuery geoQuery)
: pattern(pattern),
geoQuery{true, geoQuery}
geoQuery(geoQuery)
{}

SearchInfo::SearchInfo(const RequestContext& request)
: pattern(request.get_optional_param<std::string>("pattern", "")),
geoQuery{false, {0, 0, 0}},
geoQuery(),
bookName(request.get_optional_param<std::string>("content", ""))
{
/* Retrive geo search */
try {
auto latitude = request.get_argument<float>("latitude");
auto longitude = request.get_argument<float>("longitude");
auto distance = request.get_argument<float>("distance");
geoQuery = {true, GeoQuery(latitude, longitude, distance)};
geoQuery = GeoQuery(latitude, longitude, distance);
} catch(const std::out_of_range&) {}
catch(const std::invalid_argument&) {}

if (!geoQuery.first && pattern.empty()) {
if (!geoQuery && pattern.empty()) {
throw std::invalid_argument("No query provided.");
}
}
Expand All @@ -144,12 +144,11 @@ zim::Query SearchInfo::getZimQuery(bool verbose) const {
std::cout << "Performing query '" << pattern<< "'";
}
query.setQuery(pattern);
if (geoQuery.first) {
const auto& geoInfo = geoQuery.second;
if (geoQuery) {
if (verbose) {
std::cout << " with geo query '" << geoInfo.distance << "&(" << geoInfo.latitude << ";" << geoInfo.longitude << ")'";
std::cout << " with geo query '" << geoQuery.distance << "&(" << geoQuery.latitude << ";" << geoQuery.longitude << ")'";
}
query.setGeorange(geoInfo.latitude, geoInfo.longitude, geoInfo.distance);
query.setGeorange(geoQuery.latitude, geoQuery.longitude, geoQuery.distance);
}
if (verbose) {
std::cout << std::endl;
Expand Down
9 changes: 8 additions & 1 deletion src/server/internalServer.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,20 @@ extern "C" {
namespace kiwix {

struct GeoQuery {
GeoQuery()
: GeoQuery(0, 0, -1)
{}

GeoQuery(float latitude, float longitude, float distance)
: latitude(latitude), longitude(longitude), distance(distance)
{}
float latitude;
float longitude;
float distance;

operator bool() const {
return distance >= 0;
}

friend bool operator<(const GeoQuery& l, const GeoQuery& r)
{
Expand All @@ -75,7 +82,7 @@ class SearchInfo {

public: //data
std::string pattern;
std::pair<bool, GeoQuery> geoQuery;
GeoQuery geoQuery;
std::string bookName;
};

Expand Down

0 comments on commit eee7b95

Please sign in to comment.