aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2021-04-01 21:29:49 -0700
committerTrumeet <yuuta@yuuta.moe>2021-04-01 21:29:49 -0700
commitf14637eebb7001335caf2f9c0ae1c609ebb9de30 (patch)
treec1b2d5351f4190d83ce1668343b338660ec3f556
parent2dbbabd1eaee288c7ffc6188a3f0a1691f1a187c (diff)
downloaddn42peering-f14637eebb7001335caf2f9c0ae1c609ebb9de30.tar
dn42peering-f14637eebb7001335caf2f9c0ae1c609ebb9de30.tar.gz
dn42peering-f14637eebb7001335caf2f9c0ae1c609ebb9de30.tar.bz2
dn42peering-f14637eebb7001335caf2f9c0ae1c609ebb9de30.zip
feat(central): move database configuration a separate data class
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/database/DatabaseConfiguration.java33
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/database/DatabaseUtils.java19
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/database/package-info.java4
3 files changed, 54 insertions, 2 deletions
diff --git a/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseConfiguration.java b/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseConfiguration.java
new file mode 100644
index 0000000..6c83cb0
--- /dev/null
+++ b/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseConfiguration.java
@@ -0,0 +1,33 @@
+package moe.yuuta.dn42peering.database;
+
+import io.vertx.codegen.annotations.DataObject;
+import io.vertx.core.json.JsonObject;
+
+import javax.annotation.Nonnull;
+
+@DataObject
+public class DatabaseConfiguration {
+ public final String host;
+ public final int port;
+ public final String database;
+ public final String user;
+ public final String password;
+
+ public DatabaseConfiguration(@Nonnull JsonObject json) {
+ this.host = json.getString("host", "localhost");
+ this.port = json.getInteger("port", 3306);
+ this.database = json.getString("database", "dn42peering");
+ this.user = json.getString("user", "root");
+ this.password = json.getString("password", "");
+ }
+
+ @Nonnull
+ public JsonObject toJson() {
+ return new JsonObject()
+ .put("host", host)
+ .put("port", port)
+ .put("database", database)
+ .put("user", user)
+ .put("password", password);
+ }
+}
diff --git a/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseUtils.java b/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseUtils.java
index 8219f50..cb31070 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseUtils.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/database/DatabaseUtils.java
@@ -19,9 +19,24 @@ public final class DatabaseUtils {
LoggerFactory.getLogger(DatabaseUtils.class.getSimpleName());
@Nonnull
+ public static DatabaseConfiguration getConfiguration(@Nonnull JsonObject config) {
+ return new DatabaseConfiguration(config.getJsonObject("database"));
+ }
+
+ @Nonnull
+ public static DatabaseConfiguration getConfiguration(@Nonnull Vertx vertx) {
+ return getConfiguration(vertx.getOrCreateContext().config());
+ }
+
+ @Nonnull
public static Pool getPool(@Nonnull Vertx vertx) {
- final JsonObject json = vertx.getOrCreateContext().config().getJsonObject("database");
- final MySQLConnectOptions opt = new MySQLConnectOptions(json);
+ final DatabaseConfiguration config = getConfiguration(vertx);
+ final MySQLConnectOptions opt = new MySQLConnectOptions()
+ .setHost(config.host)
+ .setPort(config.port)
+ .setDatabase(config.database)
+ .setUser(config.user)
+ .setPassword(config.password);
return MySQLPool.pool(vertx, opt, new PoolOptions().setMaxSize(5));
}
}
diff --git a/central/src/main/java/moe/yuuta/dn42peering/database/package-info.java b/central/src/main/java/moe/yuuta/dn42peering/database/package-info.java
new file mode 100644
index 0000000..b68c79f
--- /dev/null
+++ b/central/src/main/java/moe/yuuta/dn42peering/database/package-info.java
@@ -0,0 +1,4 @@
+@ModuleGen(groupPackage = "moe.yuuta.dn42peering.database", name = "database")
+package moe.yuuta.dn42peering.database;
+
+import io.vertx.codegen.annotations.ModuleGen; \ No newline at end of file