aboutsummaryrefslogtreecommitdiff
path: root/mod/mod-repository-root.cxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2024-08-06 22:03:31 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2024-08-07 19:19:22 +0300
commit443088f6093d3420212be0e1af3b9e802dca9362 (patch)
treeb1ec3b0c62ee0b8d66b0cbf21e21d68ae0d4f806 /mod/mod-repository-root.cxx
parent7db53790ca2d2c004bfd00b503eca59a8d084870 (diff)
Add support for advanced package search
Diffstat (limited to 'mod/mod-repository-root.cxx')
-rw-r--r--mod/mod-repository-root.cxx23
1 files changed, 22 insertions, 1 deletions
diff --git a/mod/mod-repository-root.cxx b/mod/mod-repository-root.cxx
index bc861a8..165302d 100644
--- a/mod/mod-repository-root.cxx
+++ b/mod/mod-repository-root.cxx
@@ -25,6 +25,7 @@
#include <mod/mod-build-result.hxx>
#include <mod/mod-build-configs.hxx>
#include <mod/mod-package-details.hxx>
+#include <mod/mod-advanced-search.hxx>
#include <mod/mod-repository-details.hxx>
#include <mod/mod-package-version-details.hxx>
@@ -118,6 +119,7 @@ namespace brep
//
tenant_service_map_ (make_shared<tenant_service_map> ()),
packages_ (make_shared<packages> ()),
+ advanced_search_ (make_shared<advanced_search> ()),
package_details_ (make_shared<package_details> ()),
package_version_details_ (make_shared<package_version_details> ()),
repository_details_ (make_shared<repository_details> ()),
@@ -153,6 +155,10 @@ namespace brep
r.initialized_
? r.packages_
: make_shared<packages> (*r.packages_)),
+ advanced_search_ (
+ r.initialized_
+ ? r.advanced_search_
+ : make_shared<advanced_search> (*r.advanced_search_)),
package_details_ (
r.initialized_
? r.package_details_
@@ -225,6 +231,7 @@ namespace brep
{
option_descriptions r (handler::options ());
append (r, packages_->options ());
+ append (r, advanced_search_->options ());
append (r, package_details_->options ());
append (r, package_version_details_->options ());
append (r, repository_details_->options ());
@@ -272,6 +279,7 @@ namespace brep
// Initialize sub-handlers.
//
sub_init (*packages_, "packages");
+ sub_init (*advanced_search_, "advanced_search");
sub_init (*package_details_, "package_details");
sub_init (*package_version_details_, "package_version_details");
sub_init (*repository_details_, "repository_details");
@@ -305,7 +313,13 @@ namespace brep
auto verify = [&fail] (const string& v, const char* what)
{
cstrings vs ({
- "packages", "builds", "build-configs", "about", "submit", "ci"});
+ "packages",
+ "advanced-search",
+ "builds",
+ "build-configs",
+ "about",
+ "submit",
+ "ci"});
if (find (vs.begin (), vs.end (), v) == vs.end ())
fail << what << " value '" << v << "' is invalid";
@@ -459,6 +473,13 @@ namespace brep
return handle ("packages", param);
}
+ else if (func == "advanced-search")
+ {
+ if (handler_ == nullptr)
+ handler_.reset (new advanced_search (*advanced_search_));
+
+ return handle ("advanced_search", param);
+ }
else if (func == "about")
{
if (handler_ == nullptr)