summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gentoobrowse-api/api/users.ice3
-rw-r--r--gentoobrowse-api/service/sql/users/tracked.sql4
-rw-r--r--gentoobrowse-api/service/usersimpl.cpp7
-rw-r--r--gentoobrowse-api/service/usersimpl.h1
-rw-r--r--gentoobrowse-api/unittests/testUsers.cpp7
5 files changed, 22 insertions, 0 deletions
diff --git a/gentoobrowse-api/api/users.ice b/gentoobrowse-api/api/users.ice
index d0c37f7..16fa7e2 100644
--- a/gentoobrowse-api/api/users.ice
+++ b/gentoobrowse-api/api/users.ice
@@ -5,6 +5,8 @@
#include <sqlExceptions.ice>
module Gentoo {
+ sequence<int> PackageIds;
+
interface Users {
User authenticate(string username, string password) throws Slicer::NoRowsReturned;
User verify(string username, string verifyguid) throws Slicer::NoRowsReturned;
@@ -16,6 +18,7 @@ module Gentoo {
void track(int userId, int packageId);
void untrack(int userId, int packageId);
+ PackageIds tracked(int userId);
};
};
diff --git a/gentoobrowse-api/service/sql/users/tracked.sql b/gentoobrowse-api/service/sql/users/tracked.sql
new file mode 100644
index 0000000..7bf2a8d
--- /dev/null
+++ b/gentoobrowse-api/service/sql/users/tracked.sql
@@ -0,0 +1,4 @@
+SELECT packageid
+FROM gentoobrowse.user_packages
+WHERE userid = ?
+ORDER BY packageid
diff --git a/gentoobrowse-api/service/usersimpl.cpp b/gentoobrowse-api/service/usersimpl.cpp
index 6aee42d..67a1bd1 100644
--- a/gentoobrowse-api/service/usersimpl.cpp
+++ b/gentoobrowse-api/service/usersimpl.cpp
@@ -8,6 +8,7 @@
#include <sql/users/safeDelete.sql.h>
#include <sql/users/track.sql.h>
#include <sql/users/untrack.sql.h>
+#include <sql/users/tracked.sql.h>
namespace Gentoo {
namespace Service {
@@ -75,6 +76,12 @@ Users::untrack(Ice::Int userId, Ice::Int packageId, const Ice::Current &)
untrack->bindParamI(1, packageId);
untrack->execute();
}
+
+Gentoo::PackageIds
+Users::tracked(Ice::Int userId, const Ice::Current &)
+{
+ return fetchCache<Gentoo::PackageIds>(sql::users::tracked, 10, userId);
+}
}
}
diff --git a/gentoobrowse-api/service/usersimpl.h b/gentoobrowse-api/service/usersimpl.h
index f97e2ad..ae342a9 100644
--- a/gentoobrowse-api/service/usersimpl.h
+++ b/gentoobrowse-api/service/usersimpl.h
@@ -21,6 +21,7 @@ class DLL_PUBLIC Users : public Gentoo::Users, IceTray::AbstractCachingDatabaseC
void track(Ice::Int, Ice::Int, const Ice::Current &) override;
void untrack(Ice::Int, Ice::Int, const Ice::Current &) override;
+ Gentoo::PackageIds tracked(Ice::Int, const Ice::Current &) override;
};
}
}
diff --git a/gentoobrowse-api/unittests/testUsers.cpp b/gentoobrowse-api/unittests/testUsers.cpp
index e4c1ac4..a4567f3 100644
--- a/gentoobrowse-api/unittests/testUsers.cpp
+++ b/gentoobrowse-api/unittests/testUsers.cpp
@@ -95,6 +95,13 @@ BOOST_AUTO_TEST_CASE( track )
u->track(1, 44473);
}
+BOOST_AUTO_TEST_CASE( tracked )
+{
+ auto ids = u->tracked(1);
+ BOOST_REQUIRE_EQUAL(4, ids.size());
+ BOOST_REQUIRE_EQUAL(44473, ids.front());
+}
+
BOOST_AUTO_TEST_CASE( untrack )
{
u->untrack(1, 44473);