diff options
author | Trumeet <yuuta@yuuta.moe> | 2021-04-01 21:29:49 -0700 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2021-04-01 21:29:49 -0700 |
commit | f14637eebb7001335caf2f9c0ae1c609ebb9de30 (patch) | |
tree | c1b2d5351f4190d83ce1668343b338660ec3f556 | |
parent | 2dbbabd1eaee288c7ffc6188a3f0a1691f1a187c (diff) | |
download | dn42peering-f14637eebb7001335caf2f9c0ae1c609ebb9de30.tar dn42peering-f14637eebb7001335caf2f9c0ae1c609ebb9de30.tar.gz dn42peering-f14637eebb7001335caf2f9c0ae1c609ebb9de30.tar.bz2 dn42peering-f14637eebb7001335caf2f9c0ae1c609ebb9de30.zip |
feat(central): move database configuration a separate data class
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 |