summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2021-10-05 00:52:00 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2021-10-05 00:52:39 +0100
commit9524cd241d97b7505f14399cc659538898a575a3 (patch)
tree4aa2cca2bebc6332c8c5e0a027cab9de040545bd
parentPrevent copying Api object (diff)
downloadgentoobrowse-api-9524cd241d97b7505f14399cc659538898a575a3.tar.bz2
gentoobrowse-api-9524cd241d97b7505f14399cc659538898a575a3.tar.xz
gentoobrowse-api-9524cd241d97b7505f14399cc659538898a575a3.zip
Create a separate connection pool for write operations
-rw-r--r--gentoobrowse-api/service/main.cpp5
-rw-r--r--gentoobrowse-api/unittests/mockDefs.cpp12
-rw-r--r--gentoobrowse-api/unittests/mockDefs.h10
3 files changed, 23 insertions, 4 deletions
diff --git a/gentoobrowse-api/service/main.cpp b/gentoobrowse-api/service/main.cpp
index 8d21d92..7fd74ca 100644
--- a/gentoobrowse-api/service/main.cpp
+++ b/gentoobrowse-api/service/main.cpp
@@ -37,10 +37,11 @@ namespace Gentoo {
const Ice::ObjectAdapterPtr & adp) override
{
auto db = getConnectionPool(ic, "postgresql", "GentooBrowseAPI");
+ auto dbp = getConnectionPool(ic, "postgresql", "GentooBrowseAPIprimary");
auto props = ic->getProperties();
IceTray::Cube::addObject<Gentoo::Portage, Portage>(adp, "portage", db);
- IceTray::Cube::addObject<Gentoo::Maintenance, Maintenance>(adp, "maintenance", db, ic, props);
- IceTray::Cube::addObject<Gentoo::Users, Users>(adp, "users", db);
+ IceTray::Cube::addObject<Gentoo::Maintenance, Maintenance>(adp, "maintenance", dbp, ic, props);
+ IceTray::Cube::addObject<Gentoo::Users, Users>(adp, "users", dbp);
IceTray::Cube::add<Gentoo::Notifications, Notifications>();
IceTray::Cube::add<IceTray::Mail::MailServer, IceTray::Mail::LibesmtpMailServer>(
props->getPropertyWithDefault("GentooBrowseAPI.MailServer", "localhost:25"));
diff --git a/gentoobrowse-api/unittests/mockDefs.cpp b/gentoobrowse-api/unittests/mockDefs.cpp
index 60241cd..2152220 100644
--- a/gentoobrowse-api/unittests/mockDefs.cpp
+++ b/gentoobrowse-api/unittests/mockDefs.cpp
@@ -6,6 +6,18 @@
#include <notifications.h>
#include <tidy.h>
+DbAlias::DbAlias()
+{
+ AdHoc::PluginManager::getDefault()->add(
+ AdHoc::PluginManager::getDefault()->get<DB::MockDatabase>("GentooBrowseAPI")->implementation(),
+ "GentooBrowseAPIprimary", __FILE__, __LINE__);
+}
+
+DbAlias::~DbAlias()
+{
+ AdHoc::PluginManager::getDefault()->remove<DB::MockDatabase>("GentooBrowseAPIprimary");
+}
+
Service::Service() :
DB::PluginMock<PQ::Mock>("GentooBrowseAPI", {rootDir.parent_path() / "db" / "schema.sql", rootDir / "data.sql"},
"user=postgres dbname=postgres")
diff --git a/gentoobrowse-api/unittests/mockDefs.h b/gentoobrowse-api/unittests/mockDefs.h
index 7600e15..327f293 100644
--- a/gentoobrowse-api/unittests/mockDefs.h
+++ b/gentoobrowse-api/unittests/mockDefs.h
@@ -12,12 +12,18 @@
#include <users.h>
#include <visibility.h>
-class DLL_PUBLIC Service : public IceTray::DryIce, DB::PluginMock<PQ::Mock> {
+class DLL_PUBLIC DbAlias {
+public:
+ DbAlias();
+ virtual ~DbAlias();
+};
+
+class DLL_PUBLIC Service : public IceTray::DryIce, DB::PluginMock<PQ::Mock>, DbAlias {
public:
Service();
};
-class DLL_PUBLIC Maintenance : public IceTray::DryIce, DB::PluginMock<PQ::Mock> {
+class DLL_PUBLIC Maintenance : public IceTray::DryIce, DB::PluginMock<PQ::Mock>, DbAlias {
public:
Maintenance();
};