diff options
-rw-r--r-- | gentoobrowse-api/service/maintenancePackageTree.cpp | 35 | ||||
-rw-r--r-- | gentoobrowse-api/service/maintenanceimpl.h | 1 |
2 files changed, 28 insertions, 8 deletions
diff --git a/gentoobrowse-api/service/maintenancePackageTree.cpp b/gentoobrowse-api/service/maintenancePackageTree.cpp index 022730b..5ba85ff 100644 --- a/gentoobrowse-api/service/maintenancePackageTree.cpp +++ b/gentoobrowse-api/service/maintenancePackageTree.cpp @@ -4,6 +4,7 @@ #include <sqlWriter.h> #include <buffer.h> #include <scopeExit.h> +#include "utils/dbUtils.h" #include <boost/filesystem/operations.hpp> #include <boost/date_time/posix_time/posix_time.hpp> #include <boost/algorithm/string/predicate.hpp> @@ -20,22 +21,24 @@ #include "maintenance/masksProcessor.h" #include "maintenance/newsProcessor.h" -/* -10 category metadata.xml {"(2,metadata.xml)"} +namespace Gentoo { + const std::string fileTypes( +R"DATA( 10 category metadata {"(2,metadata.xml)"} 4 package metadata.xml {"(3,metadata.xml)"} -1 ebuild metadata {"(1,metadata)","(2,md5-cache)"} +1 package metadata {"(1,metadata)","(2,md5-cache)"} +2 changelog {"(3,ChangeLog)"} +7 licenses {"(1,licenses)"} +8 manifests {"(3,Manifest)"} 5 use_global {"(1,profiles)","(2,use.desc)"} 6 use_local {"(1,profiles)","(2,use.local.desc)"} 9 use_grouped {"(1,profiles)","(2,desc)","(3,%.desc)"} 3 masks {"(1,profiles)","(2,package.mask)"} 11 news {"(1,metadata)","(2,news)","(4,%.txt)"} +)DATA"); -8 package manifests {"(3,Manifest)"} -2 changelog {"(3,ChangeLog)"} -7 licenses {"(1,licenses)"} -*/ +// 8 package manifests {"(3,Manifest)"} +// 7 licenses {"(1,licenses)"} -namespace Gentoo { namespace Service { Maintenance::FileProcessor::~FileProcessor() { @@ -153,6 +156,21 @@ namespace Gentoo { return repos; } + void Maintenance::updateFileTypes(DB::Connection * dbc) const + { + DB::TablePatch p; + p.dest = "gentoobrowse.filetypes"; + p.src = Utils::Database::emptyClone(dbc, p.dest); + p.pk = { "filetypeId" }; + p.cols = { "filetypeId", "description", "spec" }; + std::stringstream buf(fileTypes); + dbc->beginBulkUpload(p.src.c_str(), ""); + dbc->bulkUploadData(buf); + dbc->endBulkUpload(nullptr); + dbc->patchTable(&p); + Utils::Database::drop(dbc, p.src); + } + void Maintenance::processChanges(DB::Connection * dbc, const boost::filesystem::path & tmp, const RepoMap & repos) { @@ -201,6 +219,7 @@ namespace Gentoo { auto dbc = db->get(); dbc->execute("SET search_path = gentoobrowse, pg_catalog"); DB::TransactionScope tx(dbc.get()); + updateFileTypes(dbc.get()); auto repos = createTempFileList(dbc.get(), tmp); processChanges(dbc.get(), tmp, repos); dbc->execute("SET search_path = public, pg_catalog"); diff --git a/gentoobrowse-api/service/maintenanceimpl.h b/gentoobrowse-api/service/maintenanceimpl.h index 8104649..c150043 100644 --- a/gentoobrowse-api/service/maintenanceimpl.h +++ b/gentoobrowse-api/service/maintenanceimpl.h @@ -40,6 +40,7 @@ namespace Gentoo { void refreshChangeLogs(const Ice::Current &) override; private: + void updateFileTypes(DB::Connection *) const; static RepoMap createTempFileList(DB::Connection *, const boost::filesystem::path &); void processChanges(DB::Connection *, const boost::filesystem::path &, const RepoMap & repos); void fileDeleted(DB::Connection * dbc, const FileProcessors *, const boost::filesystem::path &, const RepoMap *, DB::SelectCommandPtr s); |