aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbrep/package.hxx4
-rw-r--r--mod/mod-build-task.cxx39
-rw-r--r--mod/options.cli3
3 files changed, 29 insertions, 17 deletions
diff --git a/libbrep/package.hxx b/libbrep/package.hxx
index 8164639..c716436 100644
--- a/libbrep/package.hxx
+++ b/libbrep/package.hxx
@@ -484,7 +484,8 @@ namespace brep
package_id id;
};
- #pragma db view object(package)
+ #pragma db view object(package) \
+ object(repository: package::internal_repository)
struct package_version
{
package_id id;
@@ -492,7 +493,6 @@ namespace brep
// Database mapping.
//
- #pragma db member(id) column("")
#pragma db member(version) set(this.version.init (this.id.version, (?)))
};
}
diff --git a/mod/mod-build-task.cxx b/mod/mod-build-task.cxx
index e43397c..bff5b7e 100644
--- a/mod/mod-build-task.cxx
+++ b/mod/mod-build-task.cxx
@@ -72,12 +72,12 @@ handle (request& rq, response& rs)
if (build_db_ == nullptr)
throw invalid_request (501, "not implemented");
- // Make sure no parameters passed.
- //
+ params::build_task params;
+
try
{
name_value_scanner s (rq.parameters ());
- params::build_task (s, unknown_mode::fail, unknown_mode::fail);
+ params = params::build_task (s, unknown_mode::fail, unknown_mode::fail);
}
catch (const cli::exception& e)
{
@@ -225,17 +225,28 @@ handle (request& rq, response& rs)
// Skip external and stub packages.
//
- pkg_query pq ((pkg_query::internal_repository.is_not_null () &&
- compare_version_ne (pkg_query::id.version,
- wildcard_version,
- false)) +
- "ORDER BY" +
- pkg_query::id.name + "," +
- pkg_query::id.version.epoch + "," +
- pkg_query::id.version.canonical_upstream + "," +
- pkg_query::id.version.canonical_release + "," +
- pkg_query::id.version.revision +
- "OFFSET" + pkg_query::_ref (offset) + "LIMIT 50");
+ pkg_query pq (pkg_query::package::internal_repository.is_not_null () &&
+ compare_version_ne (pkg_query::package::id.version,
+ wildcard_version,
+ false));
+
+ // Filter by repositories display names (if requested).
+ //
+ const vector<string>& rp (params.repository ());
+
+ if (!rp.empty ())
+ pq = pq &&
+ pkg_query::repository::display_name.in_range (rp.begin (), rp.end ());
+
+ // Specify the portion.
+ //
+ pq += "ORDER BY" +
+ pkg_query::package::id.name + "," +
+ pkg_query::package::id.version.epoch + "," +
+ pkg_query::package::id.version.canonical_upstream + "," +
+ pkg_query::package::id.version.canonical_release + "," +
+ pkg_query::package::id.version.revision +
+ "OFFSET" + pkg_query::_ref (offset) + "LIMIT 50";
connection_ptr pkg_conn (package_db_->connection ());
diff --git a/mod/options.cli b/mod/options.cli
index 79636a8..46bc3fa 100644
--- a/mod/options.cli
+++ b/mod/options.cli
@@ -354,8 +354,9 @@ namespace brep
class build_task
{
- // No parameters so far.
+ // Package repository display name.
//
+ vector<string> repository | r;
};
class build_result