From f14637eebb7001335caf2f9c0ae1c609ebb9de30 Mon Sep 17 00:00:00 2001 From: Trumeet Date: Thu, 1 Apr 2021 21:29:49 -0700 Subject: feat(central): move database configuration a separate data class --- .../database/DatabaseConfiguration.java | 33 ++++++++++++++++++++++ .../yuuta/dn42peering/database/DatabaseUtils.java | 19 +++++++++++-- .../yuuta/dn42peering/database/package-info.java | 4 +++ 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 central/src/main/java/moe/yuuta/dn42peering/database/DatabaseConfiguration.java create mode 100644 central/src/main/java/moe/yuuta/dn42peering/database/package-info.java 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 @@ -18,10 +18,25 @@ public final class DatabaseUtils { private static final Logger logger = 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 -- cgit v1.2.3