mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2025-03-15 10:50:23 +08:00
修改dto代码适配新数据库工具库
This commit is contained in:
parent
03cb1af603
commit
7a6798bed1
2
pom.xml
2
pom.xml
@ -82,7 +82,7 @@
|
||||
<dependency>
|
||||
<groupId>cn.lunadeer</groupId>
|
||||
<artifactId>MinecraftPluginUtils</artifactId>
|
||||
<version>1.3.3-SNAPSHOT</version>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.BlueMap-Minecraft</groupId>
|
||||
|
@ -6,6 +6,8 @@ import cn.lunadeer.dominion.events.SelectPointEvents;
|
||||
import cn.lunadeer.dominion.managers.ConfigManager;
|
||||
import cn.lunadeer.dominion.managers.DatabaseTables;
|
||||
import cn.lunadeer.minecraftpluginutils.*;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.DatabaseType;
|
||||
import cn.lunadeer.minecraftpluginutils.scui.CuiManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@ -26,8 +28,8 @@ public final class Dominion extends JavaPlugin {
|
||||
new XLogger(this);
|
||||
config = new ConfigManager(this);
|
||||
XLogger.setDebug(config.isDebug());
|
||||
database = new DatabaseManager(this,
|
||||
DatabaseManager.TYPE.valueOf(config.getDbType().toUpperCase()),
|
||||
new DatabaseManager(this,
|
||||
DatabaseType.valueOf(config.getDbType().toUpperCase()),
|
||||
config.getDbHost(),
|
||||
config.getDbPort(),
|
||||
config.getDbName(),
|
||||
@ -74,12 +76,11 @@ public final class Dominion extends JavaPlugin {
|
||||
@Override
|
||||
public void onDisable() {
|
||||
// Plugin shutdown logic
|
||||
database.close();
|
||||
DatabaseManager.instance.close();
|
||||
}
|
||||
|
||||
public static Dominion instance;
|
||||
public static ConfigManager config;
|
||||
public static DatabaseManager database;
|
||||
public static Map<UUID, Map<Integer, Location>> pointsSelect = new HashMap<>();
|
||||
private GiteaReleaseCheck giteaReleaseCheck;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package cn.lunadeer.dominion.dtos;
|
||||
import cn.lunadeer.dominion.Cache;
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
|
||||
@ -15,7 +16,7 @@ import java.util.List;
|
||||
public class DominionDTO {
|
||||
private static List<DominionDTO> query(String sql, Object... args) {
|
||||
List<DominionDTO> dominions = new ArrayList<>();
|
||||
try (ResultSet rs = Dominion.database.query(sql, args)) {
|
||||
try (ResultSet rs = DatabaseManager.instance.query(sql, args)) {
|
||||
if (sql.contains("UPDATE") || sql.contains("DELETE") || sql.contains("INSERT")) {
|
||||
// 如果是更新操作,重新加载缓存
|
||||
Cache.instance.loadDominions();
|
||||
|
@ -1,119 +1,159 @@
|
||||
package cn.lunadeer.dominion.managers;
|
||||
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.Field;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.FieldType;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.TableColumn;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.AddColumn;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.CreateTable;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.InsertRow;
|
||||
|
||||
public class DatabaseTables {
|
||||
public static void migrate() {
|
||||
String sql = "";
|
||||
|
||||
// player name
|
||||
Dominion.database.createTableIfNotExists(
|
||||
"player_name",
|
||||
new String[]{"id", "uuid", "last_known_name", "last_join_at"},
|
||||
new String[]{"SERIAL PRIMARY KEY", "VARCHAR(36) NOT NULL UNIQUE", "TEXT NOT NULL", "TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"},
|
||||
null
|
||||
);
|
||||
TableColumn player_name_id = new TableColumn("id", FieldType.INT, true, true, true, true, null);
|
||||
TableColumn player_name_uuid = new TableColumn("uuid", FieldType.STRING, false, false, true, true, null);
|
||||
TableColumn player_name_last_known_name = new TableColumn("last_known_name", FieldType.STRING, false, false, true, false, null);
|
||||
TableColumn player_name_last_join_at = new TableColumn("last_join_at", FieldType.DATETIME, false, false, true, false, "CURRENT_TIMESTAMP");
|
||||
CreateTable player_name = new CreateTable().ifNotExists();
|
||||
player_name.table("player_name")
|
||||
.field(player_name_id)
|
||||
.field(player_name_uuid)
|
||||
.field(player_name_last_known_name)
|
||||
.field(player_name_last_join_at);
|
||||
player_name.execute();
|
||||
|
||||
// dominion table
|
||||
Dominion.database.createTableIfNotExists(
|
||||
"dominion",
|
||||
new String[]{"id",
|
||||
"owner",
|
||||
"name",
|
||||
"world",
|
||||
"x1", "y1", "z1", "x2", "y2", "z2",
|
||||
"parent_dom_id",
|
||||
"join_message",
|
||||
"leave_message"},
|
||||
new String[]{
|
||||
"SERIAL PRIMARY KEY",
|
||||
"VARCHAR(36) NOT NULL",
|
||||
"TEXT NOT NULL UNIQUE",
|
||||
"TEXT NOT NULL", "INT NOT NULL", "INT NOT NULL", "INT NOT NULL", "INT NOT NULL", "INT NOT NULL", "INT NOT NULL",
|
||||
"INT NOT NULL DEFAULT -1",
|
||||
"TEXT NOT NULL DEFAULT '欢迎'",
|
||||
"TEXT NOT NULL DEFAULT '再见'"},
|
||||
new String[]{
|
||||
"FOREIGN KEY (owner) REFERENCES player_name(uuid) ON DELETE CASCADE",
|
||||
"FOREIGN KEY (parent_dom_id) REFERENCES dominion(id) ON DELETE CASCADE"
|
||||
}
|
||||
);
|
||||
TableColumn dominion_id = new TableColumn("id", FieldType.INT, true, true, true, true, null);
|
||||
TableColumn dominion_owner = new TableColumn("owner", FieldType.STRING, false, false, true, false, null);
|
||||
TableColumn dominion_name = new TableColumn("name", FieldType.STRING, false, false, true, false, null);
|
||||
TableColumn dominion_world = new TableColumn("world", FieldType.STRING, false, false, true, false, null);
|
||||
TableColumn dominion_x1 = new TableColumn("x1", FieldType.INT, false, false, true, false, null);
|
||||
TableColumn dominion_y1 = new TableColumn("y1", FieldType.INT, false, false, true, false, null);
|
||||
TableColumn dominion_z1 = new TableColumn("z1", FieldType.INT, false, false, true, false, null);
|
||||
TableColumn dominion_x2 = new TableColumn("x2", FieldType.INT, false, false, true, false, null);
|
||||
TableColumn dominion_y2 = new TableColumn("y2", FieldType.INT, false, false, true, false, null);
|
||||
TableColumn dominion_z2 = new TableColumn("z2", FieldType.INT, false, false, true, false, null);
|
||||
TableColumn dominion_parent_dom_id = new TableColumn("parent_dom_id", FieldType.INT, false, false, true, false, -1);
|
||||
TableColumn dominion_join_message = new TableColumn("join_message", FieldType.STRING, false, false, true, false, "'欢迎'");
|
||||
TableColumn dominion_leave_message = new TableColumn("leave_message", FieldType.STRING, false, false, true, false, "'再见'");
|
||||
CreateTable.ForeignKey dominion_owner_fk = new CreateTable.ForeignKey(dominion_owner, "player_name", player_name_uuid, true);
|
||||
CreateTable.ForeignKey dominion_parent_dom_id_fk = new CreateTable.ForeignKey(dominion_parent_dom_id, "dominion", dominion_id, true);
|
||||
CreateTable dominion = new CreateTable().ifNotExists();
|
||||
dominion.table("dominion")
|
||||
.field(dominion_id)
|
||||
.field(dominion_owner)
|
||||
.field(dominion_name)
|
||||
.field(dominion_world)
|
||||
.field(dominion_x1)
|
||||
.field(dominion_y1)
|
||||
.field(dominion_z1)
|
||||
.field(dominion_x2)
|
||||
.field(dominion_y2)
|
||||
.field(dominion_z2)
|
||||
.field(dominion_parent_dom_id)
|
||||
.field(dominion_join_message)
|
||||
.field(dominion_leave_message)
|
||||
.foreignKey(dominion_owner_fk)
|
||||
.foreignKey(dominion_parent_dom_id_fk);
|
||||
dominion.execute();
|
||||
|
||||
// player privilege
|
||||
Dominion.database.createTableIfNotExists(
|
||||
"player_privilege",
|
||||
new String[]{"id", "player_uuid", "dom_id", "admin"},
|
||||
new String[]{"SERIAL PRIMARY KEY", "VARCHAR(36) NOT NULL", "INT NOT NULL", "BOOLEAN NOT NULL DEFAULT FALSE"},
|
||||
new String[]{
|
||||
"UNIQUE (player_uuid, dom_id)",
|
||||
"FOREIGN KEY (player_uuid) REFERENCES player_name(uuid) ON DELETE CASCADE",
|
||||
"FOREIGN KEY (dom_id) REFERENCES dominion(id) ON DELETE CASCADE"
|
||||
}
|
||||
);
|
||||
TableColumn player_privilege_id = new TableColumn("id", FieldType.INT, true, true, true, true, null);
|
||||
TableColumn player_privilege_player_uuid = new TableColumn("player_uuid", FieldType.STRING, false, false, true, false, null);
|
||||
TableColumn player_privilege_dom_id = new TableColumn("dom_id", FieldType.INT, false, false, true, false, null);
|
||||
TableColumn player_privilege_admin = new TableColumn("admin", FieldType.BOOLEAN, false, false, true, false, false);
|
||||
CreateTable.ForeignKey player_privilege_player_uuid_fk = new CreateTable.ForeignKey(player_privilege_player_uuid, "player_name", player_name_uuid, true);
|
||||
CreateTable.ForeignKey player_privilege_dom_id_fk = new CreateTable.ForeignKey(player_privilege_dom_id, "dominion", dominion_id, true);
|
||||
CreateTable player_privilege = new CreateTable().ifNotExists();
|
||||
player_privilege.table("player_privilege")
|
||||
.field(player_privilege_id)
|
||||
.field(player_privilege_player_uuid)
|
||||
.field(player_privilege_dom_id)
|
||||
.field(player_privilege_admin)
|
||||
.foreignKey(player_privilege_player_uuid_fk)
|
||||
.foreignKey(player_privilege_dom_id_fk)
|
||||
.unique(player_privilege_player_uuid, player_privilege_dom_id);
|
||||
player_name.execute();
|
||||
|
||||
Dominion.database.insertRowIfNotExists("player_name",
|
||||
new String[]{"id", "uuid", "last_known_name"},
|
||||
new String[]{"-1", "00000000-0000-0000-0000-000000000000", "server"},
|
||||
0
|
||||
);
|
||||
// server root player name
|
||||
Field server_player_name_id_field = new Field("id", -1);
|
||||
Field server_player_name_uuid_field = new Field("uuid", "00000000-0000-0000-0000-000000000000");
|
||||
Field server_player_name_last_known_name_field = new Field("last_known_name", "server");
|
||||
InsertRow insert_server_player_name = new InsertRow().table("player_name").onConflictDoNothing(server_player_name_id_field)
|
||||
.field(server_player_name_id_field)
|
||||
.field(server_player_name_uuid_field)
|
||||
.field(server_player_name_last_known_name_field);
|
||||
insert_server_player_name.execute();
|
||||
|
||||
Dominion.database.insertRowIfNotExists("dominion",
|
||||
new String[]{
|
||||
"id",
|
||||
"owner",
|
||||
"name",
|
||||
"world",
|
||||
"x1", "y1", "z1", "x2", "y2", "z2",
|
||||
"parent_dom_id",
|
||||
"join_message",
|
||||
"leave_message"},
|
||||
new String[]{
|
||||
"-1",
|
||||
"00000000-0000-0000-0000-000000000000",
|
||||
"根领地",
|
||||
"all",
|
||||
"-2147483648", "-2147483648", "-2147483648",
|
||||
"2147483647", "2147483647", "2147483647",
|
||||
"-1",
|
||||
"欢迎",
|
||||
"再见"},
|
||||
0
|
||||
);
|
||||
// server root dominion
|
||||
Field server_dom_id_field = new Field("id", -1);
|
||||
Field server_dom_owner_field = new Field("owner", "00000000-0000-0000-0000-000000000000");
|
||||
Field server_dom_name_field = new Field("name", "根领地");
|
||||
Field server_dom_world_field = new Field("world", "all");
|
||||
Field server_dom_x1_field = new Field("x1", -2147483648);
|
||||
Field server_dom_y1_field = new Field("y1", -2147483648);
|
||||
Field server_dom_z1_field = new Field("z1", -2147483648);
|
||||
Field server_dom_x2_field = new Field("x2", 2147483647);
|
||||
Field server_dom_y2_field = new Field("y2", 2147483647);
|
||||
Field server_dom_z2_field = new Field("z2", 2147483647);
|
||||
Field server_dom_parent_dom_id_field = new Field("parent_dom_id", -1);
|
||||
Field server_dom_join_message_field = new Field("join_message", "欢迎");
|
||||
Field server_dom_leave_message_field = new Field("leave_message", "再见");
|
||||
InsertRow insert_server_dom = new InsertRow().table("dominion").onConflictDoNothing(server_dom_id_field)
|
||||
.field(server_dom_id_field)
|
||||
.field(server_dom_owner_field)
|
||||
.field(server_dom_name_field)
|
||||
.field(server_dom_world_field)
|
||||
.field(server_dom_x1_field)
|
||||
.field(server_dom_y1_field)
|
||||
.field(server_dom_z1_field)
|
||||
.field(server_dom_x2_field)
|
||||
.field(server_dom_y2_field)
|
||||
.field(server_dom_z2_field)
|
||||
.field(server_dom_parent_dom_id_field)
|
||||
.field(server_dom_join_message_field)
|
||||
.field(server_dom_leave_message_field);
|
||||
insert_server_dom.execute();
|
||||
|
||||
for (Flag flag : Flag.getAllDominionFlags()) {
|
||||
Dominion.database.addColumnIfNotExists("dominion",
|
||||
flag.getFlagName(),
|
||||
"BOOLEAN NOT NULL DEFAULT " + flag.getDefaultValue());
|
||||
TableColumn column = new TableColumn(flag.getFlagName(), FieldType.BOOLEAN, false, false, true, false, flag.getDefaultValue());
|
||||
new AddColumn(column).table("dominion").ifNotExists().execute();
|
||||
}
|
||||
|
||||
for (Flag flag : Flag.getAllPrivilegeFlags()) {
|
||||
Dominion.database.addColumnIfNotExists("player_privilege",
|
||||
flag.getFlagName(),
|
||||
"BOOLEAN NOT NULL DEFAULT " + flag.getDefaultValue());
|
||||
TableColumn column = new TableColumn(flag.getFlagName(), FieldType.BOOLEAN, false, false, true, false, flag.getDefaultValue());
|
||||
new AddColumn(column).table("player_privilege").ifNotExists().execute();
|
||||
}
|
||||
|
||||
// 1.18.0
|
||||
Dominion.database.addColumnIfNotExists("dominion", "tp_location", "TEXT NOT NULL DEFAULT 'default'");
|
||||
TableColumn dominion_tp_location = new TableColumn("tp_location", FieldType.STRING, false, false, true, false, "'default'");
|
||||
new AddColumn(dominion_tp_location).table("dominion").ifNotExists().execute();
|
||||
|
||||
// 1.31.0
|
||||
Dominion.database.createTableIfNotExists(
|
||||
"privilege_template",
|
||||
new String[]{"id", "creator", "name", "admin"},
|
||||
new String[]{"SERIAL PRIMARY KEY", "VARCHAR(36) NOT NULL", "TEXT NOT NULL", "BOOLEAN NOT NULL DEFAULT FALSE"},
|
||||
new String[]{
|
||||
"UNIQUE (creator, name)",
|
||||
"FOREIGN KEY (creator) REFERENCES player_name(uuid) ON DELETE CASCADE"
|
||||
}
|
||||
);
|
||||
TableColumn privilege_template_id = new TableColumn("id", FieldType.INT, true, true, true, true, null);
|
||||
TableColumn privilege_template_creator = new TableColumn("creator", FieldType.STRING, false, false, true, false, null);
|
||||
TableColumn privilege_template_name = new TableColumn("name", FieldType.STRING, false, false, true, false, null);
|
||||
TableColumn privilege_template_admin = new TableColumn("admin", FieldType.BOOLEAN, false, false, true, false, false);
|
||||
CreateTable.ForeignKey privilege_template_creator_fk = new CreateTable.ForeignKey(privilege_template_creator, "player_name", player_name_uuid, true);
|
||||
CreateTable privilege_template = new CreateTable().ifNotExists();
|
||||
privilege_template.table("privilege_template")
|
||||
.field(privilege_template_id)
|
||||
.field(privilege_template_creator)
|
||||
.field(privilege_template_name)
|
||||
.field(privilege_template_admin)
|
||||
.foreignKey(privilege_template_creator_fk)
|
||||
.unique(privilege_template_creator, privilege_template_name);
|
||||
privilege_template.execute();
|
||||
|
||||
|
||||
for (Flag flag : Flag.getAllPrivilegeFlags()) {
|
||||
Dominion.database.addColumnIfNotExists("privilege_template",
|
||||
flag.getFlagName(),
|
||||
"BOOLEAN NOT NULL DEFAULT " + flag.getDefaultValue());
|
||||
TableColumn column = new TableColumn(flag.getFlagName(), FieldType.BOOLEAN, false, false, true, false, flag.getDefaultValue());
|
||||
new AddColumn(column).table("privilege_template").ifNotExists().execute();
|
||||
}
|
||||
|
||||
// 1.31.6
|
||||
Dominion.database.addColumnIfNotExists("dominion", "color", "TEXT NOT NULL DEFAULT '#00BFFF'");
|
||||
TableColumn dominion_color = new TableColumn("color", FieldType.STRING, false, false, true, false, "'#00BFFF'");
|
||||
new AddColumn(dominion_color).table("dominion").ifNotExists().execute();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user