reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit 1a6bd243014495a97acb2d282c785b3b21391c39
parent 4efc0ba13cd7adec08ef3ab3f317e87980d57a16
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Thu, 24 Mar 2016 21:23:08 -0400

(!!) keep a copy in the registry of the package author

to display in the browser for obsolete packages

Diffstat:
Msrc/browser.cpp | 2+-
Msrc/registry.cpp | 18++++++++++++------
Msrc/registry.hpp | 1+
Mtest/registry.cpp | 8+++++++-
4 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/browser.cpp b/src/browser.cpp @@ -443,7 +443,7 @@ string Browser::getValue(const Column col, const Entry &entry) const return display; case AuthorColumn: - return ver ? ver->displayAuthor() : ""; + return ver ? ver->displayAuthor() : regEntry.author; case TypeColumn: return pkg ? pkg->displayType() : Package::displayType(regEntry.type); case RemoteColumn: diff --git a/src/registry.cpp b/src/registry.cpp @@ -34,21 +34,22 @@ Registry::Registry(const Path &path) // entry queries m_insertEntry = m_db.prepare( - "INSERT INTO entries VALUES(NULL, ?, ?, ?, ?, ?);" + "INSERT INTO entries(remote, category, package, type, version, author)" + "VALUES(?, ?, ?, ?, ?, ?);" ); m_updateEntry = m_db.prepare( - "UPDATE entries SET type = ?, version = ? WHERE id = ?" + "UPDATE entries SET type = ?, version = ?, author = ? WHERE id = ?" ); m_findEntry = m_db.prepare( - "SELECT id, remote, category, package, type, version FROM entries " + "SELECT id, remote, category, package, type, version, author FROM entries " "WHERE remote = ? AND category = ? AND package = ? " "LIMIT 1" ); m_allEntries = m_db.prepare( - "SELECT id, category, package, type, version " + "SELECT id, category, package, type, version, author " "FROM entries WHERE remote = ?" ); m_forgetEntry = m_db.prepare("DELETE FROM entries WHERE id = ?"); @@ -90,6 +91,7 @@ void Registry::migrate() " package TEXT NOT NULL," " type INTEGER NOT NULL," " version TEXT NOT NULL," + " author TEXT NOT NULL," " UNIQUE(remote, category, package)" ");" @@ -134,7 +136,8 @@ auto Registry::push(const Version *ver, vector<Path> *conflicts) -> Entry if(entryId) { m_updateEntry->bind(1, pkg->type()); m_updateEntry->bind(2, ver->name()); - m_updateEntry->bind(3, entryId); + m_updateEntry->bind(3, ver->displayAuthor()); + m_updateEntry->bind(4, entryId); m_updateEntry->exec(); } else { @@ -143,6 +146,7 @@ auto Registry::push(const Version *ver, vector<Path> *conflicts) -> Entry m_insertEntry->bind(3, pkg->name()); m_insertEntry->bind(4, pkg->type()); m_insertEntry->bind(5, ver->name()); + m_insertEntry->bind(6, ver->displayAuthor()); m_insertEntry->exec(); entryId = m_db.lastInsertId(); @@ -181,7 +185,7 @@ auto Registry::push(const Version *ver, vector<Path> *conflicts) -> Entry else { release(); return {entryId, ri->name(), cat->name(), - pkg->name(), pkg->type(), ver->name(), ver->code()}; + pkg->name(), pkg->type(), ver->name(), ver->code(), ver->displayAuthor()}; } } @@ -206,6 +210,7 @@ auto Registry::getEntry(const Package *pkg) const -> Entry entry.type = static_cast<Package::Type>(m_findEntry->intColumn(col++)); entry.versionName = m_findEntry->stringColumn(col++); Version::parse(entry.versionName, &entry.versionCode); + entry.author = m_findEntry->stringColumn(col++); return false; }); @@ -229,6 +234,7 @@ auto Registry::getEntries(const string &remoteName) const -> vector<Entry> entry.type = static_cast<Package::Type>(m_allEntries->intColumn(col++)); entry.versionName = m_allEntries->stringColumn(col++); Version::parse(entry.versionName, &entry.versionCode); + entry.author = m_allEntries->stringColumn(col++); list.push_back(entry); diff --git a/src/registry.hpp b/src/registry.hpp @@ -40,6 +40,7 @@ public: Package::Type type; std::string versionName; Version::Code versionCode; + std::string author; }; Registry(const Path &path = Path()); diff --git a/test/registry.cpp b/test/registry.cpp @@ -18,6 +18,7 @@ static const char *M = "[registry]"; Category cat("Category Name", &ri); \ Package pkg(Package::ScriptType, "Hello", &cat); \ Version *ver = new Version("1.0", &pkg); \ + ver->setAuthor("John Doe"); \ Source *src = new Source(Source::GenericPlatform, "file", "url", ver); \ ver->addSource(src); \ pkg.addVersion(ver); @@ -32,7 +33,7 @@ TEST_CASE("query uninstalled package", M) { REQUIRE(res.versionCode == 0); } -TEST_CASE("query installed pacakge", M) { +TEST_CASE("query installed package", M) { MAKE_PACKAGE Registry reg; @@ -45,6 +46,7 @@ TEST_CASE("query installed pacakge", M) { REQUIRE(entry.type == Package::ScriptType); REQUIRE(entry.versionName == "1.0"); REQUIRE(entry.versionCode == Version("1.0").code()); + REQUIRE(entry.author == "John Doe"); const Registry::Entry &selectEntry = reg.getEntry(&pkg); REQUIRE(selectEntry.id == entry.id); @@ -54,6 +56,7 @@ TEST_CASE("query installed pacakge", M) { REQUIRE(selectEntry.type == entry.type); REQUIRE(selectEntry.versionName == entry.versionName); REQUIRE(selectEntry.versionCode == entry.versionCode); + REQUIRE(selectEntry.author == entry.author); } TEST_CASE("bump version", M) { @@ -68,10 +71,12 @@ TEST_CASE("bump version", M) { const Registry::Entry &entry1 = reg.getEntry(&pkg); REQUIRE(entry1.versionName == "1.0"); + CHECK(entry1.author == "John Doe"); reg.push(ver2); const Registry::Entry &entry2 = reg.getEntry(&pkg); REQUIRE(entry2.versionName == "2.0"); + CHECK(entry2.author == "Unknown"); REQUIRE(entry2.id == entry1.id); } @@ -108,6 +113,7 @@ TEST_CASE("query all packages", M) { REQUIRE(entries[0].type == Package::ScriptType); REQUIRE(entries[0].versionName == "1.0"); REQUIRE(entries[0].versionCode == Version("1.0").code()); + REQUIRE(entries[0].author == "John Doe"); } TEST_CASE("forget registry entry", M) {