aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2021-04-01 20:38:24 -0700
committerTrumeet <yuuta@yuuta.moe>2021-04-01 20:38:24 -0700
commit2dbbabd1eaee288c7ffc6188a3f0a1691f1a187c (patch)
tree7c21698cd36002195f8cb4ab57d40e22eff7e3c6
parent86db0a076d034624bf3ebac189161203b8d00e8f (diff)
downloaddn42peering-2dbbabd1eaee288c7ffc6188a3f0a1691f1a187c.tar
dn42peering-2dbbabd1eaee288c7ffc6188a3f0a1691f1a187c.tar.gz
dn42peering-2dbbabd1eaee288c7ffc6188a3f0a1691f1a187c.tar.bz2
dn42peering-2dbbabd1eaee288c7ffc6188a3f0a1691f1a187c.zip
refactor(central): abstract database pool
This enables the project to easily switch to other pools or centrally change pool options without modifying each service or individual classes.
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/asn/ASNServiceImpl.java5
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/asn/ASNVerticle.java11
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/database/DatabaseUtils.java27
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/node/NodeServiceImpl.java8
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/node/NodeVerticle.java11
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java11
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/peer/PeerVerticle.java11
7 files changed, 52 insertions, 32 deletions
diff --git a/central/src/main/java/moe/yuuta/dn42peering/asn/ASNServiceImpl.java b/central/src/main/java/moe/yuuta/dn42peering/asn/ASNServiceImpl.java
index 8b360ce..20cf3ce 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/asn/ASNServiceImpl.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/asn/ASNServiceImpl.java
@@ -6,7 +6,6 @@ import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.impl.logging.Logger;
import io.vertx.core.impl.logging.LoggerFactory;
-import io.vertx.mysqlclient.MySQLPool;
import io.vertx.sqlclient.*;
import io.vertx.sqlclient.templates.SqlTemplate;
import moe.yuuta.dn42peering.utils.PasswordAuthentication;
@@ -24,9 +23,9 @@ class ASNServiceImpl implements IASNService {
private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName());
private final Vertx vertx;
- private final MySQLPool pool;
+ private final Pool pool;
- ASNServiceImpl(@Nonnull Vertx vertx, @Nonnull MySQLPool pool) {
+ ASNServiceImpl(@Nonnull Vertx vertx, @Nonnull Pool pool) {
this.vertx = vertx;
this.pool = pool;
}
diff --git a/central/src/main/java/moe/yuuta/dn42peering/asn/ASNVerticle.java b/central/src/main/java/moe/yuuta/dn42peering/asn/ASNVerticle.java
index aef9e1c..9e11d8e 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/asn/ASNVerticle.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/asn/ASNVerticle.java
@@ -8,22 +8,19 @@ import io.vertx.core.eventbus.MessageConsumer;
import io.vertx.core.impl.logging.Logger;
import io.vertx.core.impl.logging.LoggerFactory;
import io.vertx.core.json.JsonObject;
-import io.vertx.mysqlclient.MySQLConnectOptions;
-import io.vertx.mysqlclient.MySQLPool;
import io.vertx.serviceproxy.ServiceBinder;
-import io.vertx.sqlclient.PoolOptions;
+import io.vertx.sqlclient.Pool;
+import moe.yuuta.dn42peering.database.DatabaseUtils;
public class ASNVerticle extends AbstractVerticle {
private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName());
private MessageConsumer<JsonObject> consumer;
- private MySQLPool pool;
+ private Pool pool;
@Override
public void start(Promise<Void> startPromise) throws Exception {
- final JsonObject json = vertx.getOrCreateContext().config().getJsonObject("database");
- final MySQLConnectOptions opt = new MySQLConnectOptions(json);
- pool = MySQLPool.pool(vertx, opt, new PoolOptions().setMaxSize(5));
+ pool = DatabaseUtils.getPool(vertx);
consumer = new ServiceBinder(vertx)
.setAddress(IASNService.ADDRESS)
diff --git a/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseUtils.java b/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseUtils.java
new file mode 100644
index 0000000..8219f50
--- /dev/null
+++ b/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseUtils.java
@@ -0,0 +1,27 @@
+package moe.yuuta.dn42peering.database;
+
+import io.vertx.core.Vertx;
+import io.vertx.core.impl.logging.Logger;
+import io.vertx.core.impl.logging.LoggerFactory;
+import io.vertx.core.json.JsonObject;
+import io.vertx.mysqlclient.MySQLConnectOptions;
+import io.vertx.mysqlclient.MySQLPool;
+import io.vertx.sqlclient.Pool;
+import io.vertx.sqlclient.PoolOptions;
+import io.vertx.sqlclient.PropertyKind;
+
+import javax.annotation.Nonnull;
+
+public final class DatabaseUtils {
+ public static PropertyKind<Long> LAST_INSERTED_ID = PropertyKind.create("last-inserted-id", Long.class);
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(DatabaseUtils.class.getSimpleName());
+
+ @Nonnull
+ public static Pool getPool(@Nonnull Vertx vertx) {
+ final JsonObject json = vertx.getOrCreateContext().config().getJsonObject("database");
+ final MySQLConnectOptions opt = new MySQLConnectOptions(json);
+ return MySQLPool.pool(vertx, opt, new PoolOptions().setMaxSize(5));
+ }
+}
diff --git a/central/src/main/java/moe/yuuta/dn42peering/node/NodeServiceImpl.java b/central/src/main/java/moe/yuuta/dn42peering/node/NodeServiceImpl.java
index cdcabf3..a2535d4 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/node/NodeServiceImpl.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/node/NodeServiceImpl.java
@@ -4,8 +4,10 @@ import io.vertx.core.AsyncResult;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
-import io.vertx.mysqlclient.MySQLPool;
+import io.vertx.sqlclient.Pool;
+import io.vertx.sqlclient.RowSet;
import io.vertx.sqlclient.templates.SqlTemplate;
+import moe.yuuta.dn42peering.database.DatabaseUtils;
import javax.annotation.Nonnull;
import java.util.ArrayList;
@@ -13,10 +15,10 @@ import java.util.Collections;
import java.util.List;
class NodeServiceImpl implements INodeService {
- private final MySQLPool pool;
+ private final Pool pool;
private final Vertx vertx;
- NodeServiceImpl(@Nonnull Vertx vertx, @Nonnull MySQLPool mySQLPool) {
+ NodeServiceImpl(@Nonnull Vertx vertx, @Nonnull Pool mySQLPool) {
this.vertx = vertx;
this.pool = mySQLPool;
}
diff --git a/central/src/main/java/moe/yuuta/dn42peering/node/NodeVerticle.java b/central/src/main/java/moe/yuuta/dn42peering/node/NodeVerticle.java
index d23d6d5..cb43932 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/node/NodeVerticle.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/node/NodeVerticle.java
@@ -8,22 +8,19 @@ import io.vertx.core.eventbus.MessageConsumer;
import io.vertx.core.impl.logging.Logger;
import io.vertx.core.impl.logging.LoggerFactory;
import io.vertx.core.json.JsonObject;
-import io.vertx.mysqlclient.MySQLConnectOptions;
-import io.vertx.mysqlclient.MySQLPool;
import io.vertx.serviceproxy.ServiceBinder;
-import io.vertx.sqlclient.PoolOptions;
+import io.vertx.sqlclient.Pool;
+import moe.yuuta.dn42peering.database.DatabaseUtils;
public class NodeVerticle extends AbstractVerticle {
private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName());
private MessageConsumer<JsonObject> consumer;
- private MySQLPool pool;
+ private Pool pool;
@Override
public void start(Promise<Void> startPromise) throws Exception {
- final JsonObject json = vertx.getOrCreateContext().config().getJsonObject("database");
- final MySQLConnectOptions opt = new MySQLConnectOptions(json);
- pool = MySQLPool.pool(vertx, opt, new PoolOptions().setMaxSize(5));
+ pool = DatabaseUtils.getPool(vertx);
consumer = new ServiceBinder(vertx)
.setAddress(INodeService.ADDRESS)
diff --git a/central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java b/central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java
index 62223c2..5784da2 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java
@@ -3,12 +3,12 @@ package moe.yuuta.dn42peering.peer;
import io.vertx.core.*;
import io.vertx.core.impl.logging.Logger;
import io.vertx.core.impl.logging.LoggerFactory;
-import io.vertx.mysqlclient.MySQLClient;
+import io.vertx.sqlclient.Pool;
import io.vertx.sqlclient.Row;
import io.vertx.sqlclient.RowSet;
-import io.vertx.sqlclient.SqlClient;
import io.vertx.sqlclient.SqlResult;
import io.vertx.sqlclient.templates.SqlTemplate;
+import moe.yuuta.dn42peering.database.DatabaseUtils;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -18,9 +18,9 @@ class PeerServiceImpl implements IPeerService {
private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName());
private final Vertx vertx;
- private final SqlClient pool;
+ private final Pool pool;
- PeerServiceImpl(@Nonnull Vertx vertx, @Nonnull SqlClient sql) {
+ PeerServiceImpl(@Nonnull Vertx vertx, @Nonnull Pool sql) {
this.vertx = vertx;
this.pool = sql;
}
@@ -41,6 +41,7 @@ class PeerServiceImpl implements IPeerService {
for (Peer peer : peers) peerList.add(peer);
return Future.succeededFuture(peerList);
})
+ .onFailure(err -> err.printStackTrace())
.onComplete(handler);
return this;
}
@@ -97,7 +98,7 @@ class PeerServiceImpl implements IPeerService {
.mapFrom(PeerParametersMapper.INSTANCE)
.mapTo(PeerRowMapper.INSTANCE)
.execute(peer, f))
- .compose(rows -> Future.succeededFuture(rows.property(MySQLClient.LAST_INSERTED_ID)))
+ .compose(rows -> Future.succeededFuture(rows.property(DatabaseUtils.LAST_INSERTED_ID)))
.onComplete(handler);
return this;
}
diff --git a/central/src/main/java/moe/yuuta/dn42peering/peer/PeerVerticle.java b/central/src/main/java/moe/yuuta/dn42peering/peer/PeerVerticle.java
index 666ced8..59c3f68 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/peer/PeerVerticle.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/peer/PeerVerticle.java
@@ -8,22 +8,19 @@ import io.vertx.core.eventbus.MessageConsumer;
import io.vertx.core.impl.logging.Logger;
import io.vertx.core.impl.logging.LoggerFactory;
import io.vertx.core.json.JsonObject;
-import io.vertx.mysqlclient.MySQLConnectOptions;
-import io.vertx.mysqlclient.MySQLPool;
import io.vertx.serviceproxy.ServiceBinder;
-import io.vertx.sqlclient.PoolOptions;
+import io.vertx.sqlclient.Pool;
+import moe.yuuta.dn42peering.database.DatabaseUtils;
public class PeerVerticle extends AbstractVerticle {
private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName());
private MessageConsumer<JsonObject> consumer;
- private MySQLPool pool;
+ private Pool pool;
@Override
public void start(Promise<Void> startPromise) throws Exception {
- final JsonObject json = vertx.getOrCreateContext().config().getJsonObject("database");
- final MySQLConnectOptions opt = new MySQLConnectOptions(json);
- pool = MySQLPool.pool(vertx, opt, new PoolOptions().setMaxSize(5));
+ pool = DatabaseUtils.getPool(vertx);
consumer = new ServiceBinder(vertx)
.setAddress(IPeerService.ADDRESS)