From 54e3c33fb327efe0cbfd806c5468cbe390dafeaa Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 12 Jun 2015 12:32:06 +0200 Subject: Implement object model for packages --- brep/view.cxx | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) (limited to 'brep/view.cxx') diff --git a/brep/view.cxx b/brep/view.cxx index 0ec6c67..48c8188 100644 --- a/brep/view.cxx +++ b/brep/view.cxx @@ -7,10 +7,21 @@ #include // shared_ptr, make_shared() #include +#include +#include +#include + +#include + #include +#include +#include + using namespace std; +using namespace odb::core; +#pragma db namespace session namespace brep { void view:: @@ -19,11 +30,29 @@ namespace brep options_ = make_shared (s, cli::unknown_mode::fail, cli::unknown_mode::fail); + + db_ = make_shared("", + "", + "brep", + options_->db_host (), + options_->db_port ()); } void view:: handle (request& rq, response& rs) { + session s; + transaction t (db_->begin ()); + + shared_ptr p (db_->load ("cli")); + + for (auto& vp : p->versions) + { + s.cache_insert (*db_, vp.object_id (), vp.load ()); + } + + t.commit (); + ostream& o (rs.content (200, "text/html;charset=utf-8", false)); o << ""; @@ -40,6 +69,64 @@ namespace brep o << "
\n" << c.name << "=" << c.value; } + o << "

\n" << p->name << ": " << p->versions.size (); + + for (const auto& vp : p->versions) + { + shared_ptr v ( + s.cache_find (*db_, vp.object_id ())); + + if (!v) + { + o << "
no version in cache !"; + } + else + { + o << "
licenses:" << v->license_alternatives.size (); + + for (const auto& la : v->license_alternatives) + { + o << "
"; + + for (const auto& l : la) + { + o << " |" << l << "|"; + } + } + + o << "
deps:" << v->dependencies.size (); + + for (const auto& da : v->dependencies) + { + o << "
"; + + for (const auto& d : da) + { + o << " |" << d.package; + + if (!d.version.null ()) + { + o << "," << d.version->value << "," + << static_cast (d.version->operation) << "|"; + } + } + } + + o << "
requirements:" << v->requirements.size (); + + for (const auto& ra : v->requirements) + { + o << "
"; + + for (const auto& r : ra) + { + o << " |" << r << "|"; + } + } + } + + } + o << "

Search" << ""; } -- cgit v1.1