1
mirror of https://github.com/CarmJos/ScriptItems synced 2024-09-19 21:35:50 +00:00

添加log数据库相关配置

This commit is contained in:
Carm Jos 2022-03-06 20:51:14 +08:00
parent 2f76db122c
commit 3d62bad0c4
6 changed files with 147 additions and 27 deletions

View File

@ -8,7 +8,6 @@ import cc.carm.plugin.itemcommands.manager.ConfigManager;
import cc.carm.plugin.itemcommands.util.JarResourceUtils;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.event.Listener;
import java.util.Optional;
@ -21,27 +20,6 @@ public class Main extends EasyPlugin {
instance = this;
}
/**
* 注册监听器
*
* @param listener 监听器
*/
public static void regListener(Listener listener) {
Bukkit.getPluginManager().registerEvents(listener, getInstance());
}
public static void info(String... messages) {
getInstance().log(messages);
}
public static void severe(String... messages) {
getInstance().error(messages);
}
public static void debugging(String... messages) {
getInstance().debug(messages);
}
public static Main getInstance() {
return instance;
}
@ -75,7 +53,7 @@ public class Main extends EasyPlugin {
@Override
protected void shutdown() {
info("卸载监听器...");
log("卸载监听器...");
Bukkit.getServicesManager().unregisterAll(this);
}
@ -89,4 +67,17 @@ public class Main extends EasyPlugin {
public void outputInfo() {
Optional.ofNullable(JarResourceUtils.readResource(this.getResource("PLUGIN_INFO"))).ifPresent(this::log);
}
public static void info(String... messages) {
getInstance().log(messages);
}
public static void severe(String... messages) {
getInstance().error(messages);
}
public static void debugging(String... messages) {
getInstance().debug(messages);
}
}

View File

@ -16,8 +16,8 @@ public class PluginConfig {
"check-update", Boolean.class, true
);
public static final ConfigValue<String> STORAGE_METHOD = new ConfigValue<>(
"storage.method", String.class, "YAML"
public static final ConfigValue<Boolean> LOG_STORAGE = new ConfigValue<>(
"log-storage.enable", Boolean.class, true
);
}

View File

@ -0,0 +1,49 @@
package cc.carm.plugin.itemcommands.database;
import cc.carm.lib.easyplugin.configuration.values.ConfigValue;
public class DBConfiguration {
protected static final ConfigValue<String> DRIVER_NAME = new ConfigValue<>(
"log-storage.database.driver", String.class,
"com.mysql.cj.jdbc.Driver"
);
protected static final ConfigValue<String> HOST = new ConfigValue<>(
"log-storage.database.host", String.class,
"127.0.0.1"
);
protected static final ConfigValue<Integer> PORT = new ConfigValue<>(
"log-storage.database.port", Integer.class,
3306
);
protected static final ConfigValue<String> DATABASE = new ConfigValue<>(
"log-storage.database.database", String.class,
"minecraft"
);
protected static final ConfigValue<String> USERNAME = new ConfigValue<>(
"log-storage.database.username", String.class,
"root"
);
protected static final ConfigValue<String> PASSWORD = new ConfigValue<>(
"log-storage.database.password", String.class,
"password"
);
protected static final ConfigValue<String> EXTRA_SETTINGS = new ConfigValue<>(
"log-storage.database.extra", String.class,
"?useSSL=false"
);
protected static String buildJDBC() {
return String.format("jdbc:mysql://%s:%s/%s%s",
HOST.get(), PORT.get(), DATABASE.get(), EXTRA_SETTINGS.get()
);
}
}

View File

@ -0,0 +1,26 @@
package cc.carm.plugin.itemcommands.database;
import cc.carm.lib.easyplugin.configuration.values.ConfigValue;
public class DBTables {
public static class LogTable {
protected static final ConfigValue<String> TABLE_NAME = new ConfigValue<>(
"log-storage.database.table-name", String.class,
"log_item_commands"
);
protected static final String[] TABLE_COLUMNS = new String[]{
"`uuid` VARCHAR(36) NOT NULL PRIMARY KEY COMMENT '用户UUID'", // 用户的UUID
"`time` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户在线秒数'",// 用户在线时间()
"`update` DATETIME NOT NULL " +
"DEFAULT CURRENT_TIMESTAMP " +
"ON UPDATE CURRENT_TIMESTAMP " +
" COMMENT '最后更新时间'"
};
}
}

View File

@ -0,0 +1,53 @@
package cc.carm.plugin.itemcommands.database;
import cc.carm.lib.easysql.EasySQL;
import cc.carm.lib.easysql.api.SQLManager;
import cc.carm.plugin.itemcommands.Main;
import java.sql.SQLException;
public class DataManager {
private SQLManager sqlManager;
public boolean initialize() {
try {
Main.info(" 尝试连接到数据库...");
this.sqlManager = EasySQL.createManager(
DBConfiguration.DRIVER_NAME.get(), DBConfiguration.buildJDBC(),
DBConfiguration.USERNAME.get(), DBConfiguration.PASSWORD.get()
);
this.sqlManager.setDebugMode(() -> Main.getInstance().isDebugging());
} catch (Exception exception) {
Main.severe("无法连接到数据库,请检查配置文件。");
exception.printStackTrace();
return false;
}
try {
Main.info(" 创建插件记录所需表...");
getSQLManager().createTable(DBTables.LogTable.TABLE_NAME.get())
.setColumns(DBTables.LogTable.TABLE_COLUMNS)
.build().execute();
} catch (SQLException exception) {
Main.severe("无法创建插件所需的表,请检查数据库权限。");
exception.printStackTrace();
return false;
}
return true;
}
public void shutdown() {
Main.info(" 关闭数据库连接...");
EasySQL.shutdownManager(getSQLManager());
this.sqlManager = null;
}
public SQLManager getSQLManager() {
return sqlManager;
}
}

View File

@ -15,7 +15,7 @@ metrics: true
# 检查更新为异步操作,绝不会影响性能与使用体验。
check-update: true
log-stroage:
log-storage:
# 是否启用日志记录存储
# 可用于追踪物品的发放、领取情况与执行记录。
enable: true
@ -31,4 +31,5 @@ log-stroage:
username: "username"
password: "password"
extra: "?useSSL=false"
# 插件相关表的名称
# 插件相关表的名称
table-name: "log_item_commands"