diff options
4 files changed, 37 insertions, 58 deletions
| diff --git a/gentoobrowse-api/service/maintenance/updatesProcessor.cpp b/gentoobrowse-api/service/maintenance/updatesProcessor.cpp index 530c445..77e55e1 100644 --- a/gentoobrowse-api/service/maintenance/updatesProcessor.cpp +++ b/gentoobrowse-api/service/maintenance/updatesProcessor.cpp @@ -9,7 +9,7 @@  #include <fstream>  #include <boost/bind.hpp>  #include <sql/maintenance/categoryInsert.sql.h> -#include <sql/maintenance/updatesMovePackages.sql.h> +#include <sql/maintenance/packageInsert.sql.h>  #include <sql/maintenance/updatesMoveUserPackages.sql.h>  #include <sql/portage/findPackage.sql.h>  #include <boost/algorithm/string/predicate.hpp> @@ -33,9 +33,9 @@ namespace Gentoo {  			public:  				UpdatesPatch(DB::Connection * db) :  					categoryInsert(sql::maintenance::categoryInsert.modify(db)), +					packageInsert(sql::maintenance::packageInsert.modify(db)),  					findPackage(sql::portage::findPackage.select(db)), -					movePackages(sql::maintenance::updatesMovePackages.modify(db)), -					moveUserPackages(sql::maintenance::updatesMoveUserPackages.modify(db)), +					updatesMoveUserPackages(sql::maintenance::updatesMoveUserPackages.modify(db)),  					changes(nullptr),  					updatePacks("updatePack")  				{ @@ -63,9 +63,9 @@ namespace Gentoo {  				DB::ModifyCommandPtr drop;  				DB::ModifyCommandPtr categoryInsert; +				DB::ModifyCommandPtr packageInsert;  				DB::SelectCommandPtr findPackage; -				DB::ModifyCommandPtr movePackages; -				DB::ModifyCommandPtr moveUserPackages; +				DB::ModifyCommandPtr updatesMoveUserPackages;  				ChangeSet * changes;  				Utils::EntityWhereFilter<std::string> updatePacks; @@ -73,51 +73,37 @@ namespace Gentoo {  				move(DB::SelectCommandPtr s)  				{  					s->forEachRow<std::string, std::string, std::string, std::string, std::string>([this](auto catfrom, auto catto, auto namefrom, auto nameto, auto) { -						findPackage->bindParamS(0, catto); -						findPackage->bindParamS(1, nameto); -						if (findPackage->fetch()) { // Does target already exist? -							// Merge -							moveUserPackages->bindParamS(0, catfrom); -							moveUserPackages->bindParamS(1, namefrom); -							moveUserPackages->bindParamS(2, catto); -							moveUserPackages->bindParamS(3, nameto); -							moveUserPackages->execute(); -						} -						else { -							// Move +						if (this->exists(catfrom, namefrom) && !this->exists(catto, nameto)) { // Does target already exist? +							// Create category  							categoryInsert->bindParamS(0, catto);  							categoryInsert->bindParamS(1, catto);  							categoryInsert->execute(); -							movePackages->bindParamS(0, nameto); -							movePackages->bindParamS(1, namefrom); -							movePackages->bindParamS(2, catfrom); -							movePackages->bindParamS(3, catto); -							movePackages->execute(); -							// Move and/or merge file list entries -							for(auto changei = changes->begin(); changei != changes->end();) { -								auto & pp = changei->second.pathParts; -								if (pp.size() == 4 && pp[0] == "metadata" && pp[1] == "md5-cache" && pp[2] == catfrom && boost::algorithm::starts_with(pp[3], namefrom + "-")) { -									auto cd = changei->second; -									cd.pathParts[2] = catto; -									cd.pathParts[3] = nameto + cd.pathParts[3].substr(namefrom.length()); -									auto path = boost::algorithm::join(cd.pathParts, "/"); -									auto target = changes->find(path); -									if (target == changes->end()) { -										changes->insert({ path, cd }); -									} -									else if (cd.changeType == GIT_DELTA_DELETED && target->second.changeType == GIT_DELTA_ADDED) { -										target->second.changeType = GIT_DELTA_MODIFIED; -									} -									changei = changes->erase(changei); -								} -								else { -									changei++; -								} -							} +							// Create package +							packageInsert->bindParamS(0, nameto); +							packageInsert->bindParamS(1, "Created by package move"); +							packageInsert->bindParamS(2, nameto); +							packageInsert->bindParamS(3, catto); +							packageInsert->execute();  						} -						while (findPackage->fetch()) ; +						updatesMoveUserPackages->bindParamS(0, catfrom); +						updatesMoveUserPackages->bindParamS(1, namefrom); +						updatesMoveUserPackages->bindParamS(2, catto); +						updatesMoveUserPackages->bindParamS(3, nameto); +						updatesMoveUserPackages->execute();  					});  				} + +				bool +				exists(const std::string & cat, const std::string & pkg) +				{ +					bool found = false;	 +					findPackage->bindParamS(0, cat); +					findPackage->bindParamS(1, pkg); +					while (findPackage->fetch()) { +						found = true; +					} +					return found; +				}  		};  		void diff --git a/gentoobrowse-api/service/sql/maintenance/updatesMovePackages.sql b/gentoobrowse-api/service/sql/maintenance/updatesMovePackages.sql deleted file mode 100644 index 1dfe419..0000000 --- a/gentoobrowse-api/service/sql/maintenance/updatesMovePackages.sql +++ /dev/null @@ -1,8 +0,0 @@ -UPDATE gentoobrowse.packages p SET -	name = ?, -	categoryid = cn.categoryid -FROM gentoobrowse.categories co, gentoobrowse.categories cn -WHERE p.name = ? -AND p.categoryid = co.categoryid -AND co.name = ? -AND cn.name = ? diff --git a/gentoobrowse-api/unittests/fixtures/756569aa764177340726dd3d40b41d89b11b20c7/profiles/use.local.desc b/gentoobrowse-api/unittests/fixtures/756569aa764177340726dd3d40b41d89b11b20c7/profiles/use.local.desc index 0240b4d..aea3813 100644 --- a/gentoobrowse-api/unittests/fixtures/756569aa764177340726dd3d40b41d89b11b20c7/profiles/use.local.desc +++ b/gentoobrowse-api/unittests/fixtures/756569aa764177340726dd3d40b41d89b11b20c7/profiles/use.local.desc @@ -1,6 +1,7 @@  # This file is deprecated as per GLEP 56 in favor of metadata.xml.  # Please add your descriptions to your package's metadata.xml ONLY.  # * generated automatically using pmaint * +# Changed size with this line  app-accessibility/brltty:api - build brltty's application program interface  app-accessibility/brltty:beeper - support the console tone generator diff --git a/gentoobrowse-api/unittests/testMaintenance.cpp b/gentoobrowse-api/unittests/testMaintenance.cpp index 2bdba64..ab9786d 100644 --- a/gentoobrowse-api/unittests/testMaintenance.cpp +++ b/gentoobrowse-api/unittests/testMaintenance.cpp @@ -277,16 +277,16 @@ BOOST_AUTO_TEST_CASE( testRefreshGitRepository )  			SQL_REQUIRE_EQUAL(R"SQL(SELECT COUNT(*) FROM gentoobrowse.categories c, gentoobrowse.packages p  				WHERE c.categoryid = p.categoryid AND p.name = 'libkgapi' AND c.name='net-libs')SQL", int64_t, 0);  		} -		BOOST_TEST_CONTEXT("And it maintained its original packageId, but changed categoryId") { +		BOOST_TEST_CONTEXT("And it was created new in the right category") {  			SQL_REQUIRE_EQUAL(R"SQL(SELECT p.packageid FROM gentoobrowse.categories c, gentoobrowse.packages p -				WHERE c.categoryid = p.categoryid AND p.name = 'libkgapi' AND c.name='kde-apps')SQL", int64_t, 9); +				WHERE c.categoryid = p.categoryid AND p.name = 'libkgapi' AND c.name='kde-apps')SQL", int64_t, 28);  			SQL_REQUIRE_EQUAL(R"SQL(SELECT p.categoryid FROM gentoobrowse.categories c, gentoobrowse.packages p  				WHERE c.categoryid = p.categoryid AND p.name = 'libkgapi' AND c.name='kde-apps')SQL", int64_t, 8);  		} -		BOOST_TEST_CONTEXT("Original ebuilds in moved package were not deleted and replaced") { -			SQL_REQUIRE_EQUAL(R"SQL(SELECT COUNT(*) FROM gentoobrowse.ebuilds e WHERE e.packageid = 9)SQL", int64_t, 2); -			SQL_REQUIRE_EQUAL(R"SQL(SELECT COUNT(*) FROM gentoobrowse.ebuilds e WHERE e.ebuildid in (12, 13))SQL", int64_t, 2); -			SQL_REQUIRE_EQUAL(R"SQL(SELECT MIN(e.packageid) FROM gentoobrowse.ebuilds e WHERE e.ebuildid in (12, 13))SQL", int64_t, 9); +		BOOST_TEST_CONTEXT("Original ebuilds in moved package were deleted") { +			SQL_REQUIRE_EQUAL(R"SQL(SELECT COUNT(*) FROM gentoobrowse.ebuilds e WHERE e.packageid = 9)SQL", int64_t, 0); +			SQL_REQUIRE_EQUAL(R"SQL(SELECT COUNT(*) FROM gentoobrowse.ebuilds e WHERE e.packageid = 28)SQL", int64_t, 2); +			SQL_REQUIRE_EQUAL(R"SQL(SELECT COUNT(*) FROM gentoobrowse.ebuilds e WHERE e.ebuildid in (12, 13))SQL", int64_t, 0);  		}  	}  	BOOST_TEST_CONTEXT("Change log was imported correctly") { | 
