From 03cb1af6035b7b901c3b83196b7a67e81a3904b5 Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Mon, 17 Jun 2024 17:51:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0mysql?= =?UTF-8?q?=E9=80=82=E9=85=8D=EF=BC=8C=E4=BD=86=E6=9A=82=E6=97=B6=E5=AD=98?= =?UTF-8?q?=E5=9C=A8returning=E8=AF=AD=E6=B3=95=E7=BC=BA=E5=A4=B1=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../dominion/managers/DatabaseTables.java | 138 ++++++++++-------- src/main/resources/config.yml | 2 +- 3 files changed, 78 insertions(+), 66 deletions(-) diff --git a/pom.xml b/pom.xml index 651cdf6..6d66674 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer Dominion - 1.32.0-beta + 1.33.0-beta jar Dominion @@ -82,7 +82,7 @@ cn.lunadeer MinecraftPluginUtils - 1.3.2-SNAPSHOT + 1.3.3-SNAPSHOT com.github.BlueMap-Minecraft diff --git a/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java b/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java index 018ce1d..0dc1548 100644 --- a/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java +++ b/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java @@ -8,65 +8,78 @@ public class DatabaseTables { String sql = ""; // player name - sql = "CREATE TABLE IF NOT EXISTS player_name (" + - " id SERIAL PRIMARY KEY," + - " uuid VARCHAR(36) NOT NULL UNIQUE," + - " last_known_name TEXT NOT NULL," + - " last_join_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP" + - ");"; - Dominion.database.query(sql); + 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 + ); // dominion table - sql = "CREATE TABLE IF NOT EXISTS dominion (" + - " id SERIAL PRIMARY KEY," + - " owner VARCHAR(36) NOT NULL," + - " name TEXT NOT NULL UNIQUE," + - " world TEXT NOT NULL," + - " x1 INT NOT NULL," + - " y1 INT NOT NULL," + - " z1 INT NOT NULL," + - " x2 INT NOT NULL," + - " y2 INT NOT NULL," + - " z2 INT NOT NULL," + - " parent_dom_id INT NOT NULL DEFAULT -1," + - " join_message TEXT NOT NULL DEFAULT '欢迎', " + - " leave_message TEXT NOT NULL DEFAULT '再见', " + - - " FOREIGN KEY (owner) REFERENCES player_name(uuid) ON DELETE CASCADE," + - " FOREIGN KEY (parent_dom_id) REFERENCES dominion(id) ON DELETE CASCADE" + - ");"; - Dominion.database.query(sql); + 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" + } + ); // player privilege - sql = "CREATE TABLE IF NOT EXISTS player_privilege (" + - " id SERIAL PRIMARY KEY," + - " player_uuid VARCHAR(36) NOT NULL," + - " dom_id INT NOT NULL," + + 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" + } + ); - " admin BOOLEAN NOT NULL DEFAULT FALSE," + + Dominion.database.insertRowIfNotExists("player_name", + new String[]{"id", "uuid", "last_known_name"}, + new String[]{"-1", "00000000-0000-0000-0000-000000000000", "server"}, + 0 + ); - " 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" + - ");"; - Dominion.database.query(sql); - - sql = "INSERT INTO player_name (" + - "id, uuid, last_known_name" + - ") VALUES (" + - "-1, '00000000-0000-0000-0000-000000000000', 'server'" + - ") ON CONFLICT DO NOTHING;"; - Dominion.database.query(sql); - - sql = "INSERT INTO dominion (" + - "id, owner, name, world, x1, y1, z1, x2, y2, z2, parent_dom_id, join_message, leave_message" + - ") VALUES (" + - "-1, '00000000-0000-0000-0000-000000000000', '根领地', 'all', " + - "-2147483648, -2147483648, -2147483648, " + - "2147483647, 2147483647, 2147483647, -1, " + - "'欢迎', '再见'" + - ") ON CONFLICT DO NOTHING;"; - Dominion.database.query(sql); + 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 + ); for (Flag flag : Flag.getAllDominionFlags()) { Dominion.database.addColumnIfNotExists("dominion", @@ -84,16 +97,15 @@ public class DatabaseTables { Dominion.database.addColumnIfNotExists("dominion", "tp_location", "TEXT NOT NULL DEFAULT 'default'"); // 1.31.0 - sql = "CREATE TABLE IF NOT EXISTS privilege_template (" + - " id SERIAL PRIMARY KEY," + - " creator VARCHAR(36) NOT NULL," + - " name TEXT NOT NULL," + - " admin BOOLEAN NOT NULL DEFAULT FALSE," + - - " UNIQUE (creator, name)," + - " FOREIGN KEY (creator) REFERENCES player_name(uuid) ON DELETE CASCADE" + - ");"; - Dominion.database.query(sql); + 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" + } + ); for (Flag flag : Flag.getAllPrivilegeFlags()) { Dominion.database.addColumnIfNotExists("privilege_template", diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b99a985..fd791f3 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,5 +1,5 @@ Database: - Type: sqlite # pgsql, sqlite + Type: sqlite # pgsql, sqlite, mysql Host: localhost Port: 5432 Name: dominion