初步实现mysql适配,但暂时存在returning语法缺失问题
This commit is contained in:
parent
2299630e15
commit
03cb1af603
4
pom.xml
4
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>cn.lunadeer</groupId>
|
<groupId>cn.lunadeer</groupId>
|
||||||
<artifactId>Dominion</artifactId>
|
<artifactId>Dominion</artifactId>
|
||||||
<version>1.32.0-beta</version>
|
<version>1.33.0-beta</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Dominion</name>
|
<name>Dominion</name>
|
||||||
@ -82,7 +82,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.lunadeer</groupId>
|
<groupId>cn.lunadeer</groupId>
|
||||||
<artifactId>MinecraftPluginUtils</artifactId>
|
<artifactId>MinecraftPluginUtils</artifactId>
|
||||||
<version>1.3.2-SNAPSHOT</version>
|
<version>1.3.3-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.BlueMap-Minecraft</groupId>
|
<groupId>com.github.BlueMap-Minecraft</groupId>
|
||||||
|
@ -8,65 +8,78 @@ public class DatabaseTables {
|
|||||||
String sql = "";
|
String sql = "";
|
||||||
|
|
||||||
// player name
|
// player name
|
||||||
sql = "CREATE TABLE IF NOT EXISTS player_name (" +
|
Dominion.database.createTableIfNotExists(
|
||||||
" id SERIAL PRIMARY KEY," +
|
"player_name",
|
||||||
" uuid VARCHAR(36) NOT NULL UNIQUE," +
|
new String[]{"id", "uuid", "last_known_name", "last_join_at"},
|
||||||
" last_known_name TEXT NOT NULL," +
|
new String[]{"SERIAL PRIMARY KEY", "VARCHAR(36) NOT NULL UNIQUE", "TEXT NOT NULL", "TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"},
|
||||||
" last_join_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP" +
|
null
|
||||||
");";
|
);
|
||||||
Dominion.database.query(sql);
|
|
||||||
|
|
||||||
// dominion table
|
// dominion table
|
||||||
sql = "CREATE TABLE IF NOT EXISTS dominion (" +
|
Dominion.database.createTableIfNotExists(
|
||||||
" id SERIAL PRIMARY KEY," +
|
"dominion",
|
||||||
" owner VARCHAR(36) NOT NULL," +
|
new String[]{"id",
|
||||||
" name TEXT NOT NULL UNIQUE," +
|
"owner",
|
||||||
" world TEXT NOT NULL," +
|
"name",
|
||||||
" x1 INT NOT NULL," +
|
"world",
|
||||||
" y1 INT NOT NULL," +
|
"x1", "y1", "z1", "x2", "y2", "z2",
|
||||||
" z1 INT NOT NULL," +
|
"parent_dom_id",
|
||||||
" x2 INT NOT NULL," +
|
"join_message",
|
||||||
" y2 INT NOT NULL," +
|
"leave_message"},
|
||||||
" z2 INT NOT NULL," +
|
new String[]{
|
||||||
" parent_dom_id INT NOT NULL DEFAULT -1," +
|
"SERIAL PRIMARY KEY",
|
||||||
" join_message TEXT NOT NULL DEFAULT '欢迎', " +
|
"VARCHAR(36) NOT NULL",
|
||||||
" leave_message TEXT NOT NULL DEFAULT '再见', " +
|
"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",
|
||||||
" FOREIGN KEY (owner) REFERENCES player_name(uuid) ON DELETE CASCADE," +
|
"INT NOT NULL DEFAULT -1",
|
||||||
" FOREIGN KEY (parent_dom_id) REFERENCES dominion(id) ON DELETE CASCADE" +
|
"TEXT NOT NULL DEFAULT '欢迎'",
|
||||||
");";
|
"TEXT NOT NULL DEFAULT '再见'"},
|
||||||
Dominion.database.query(sql);
|
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
|
// player privilege
|
||||||
sql = "CREATE TABLE IF NOT EXISTS player_privilege (" +
|
Dominion.database.createTableIfNotExists(
|
||||||
" id SERIAL PRIMARY KEY," +
|
"player_privilege",
|
||||||
" player_uuid VARCHAR(36) NOT NULL," +
|
new String[]{"id", "player_uuid", "dom_id", "admin"},
|
||||||
" dom_id INT NOT NULL," +
|
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)," +
|
Dominion.database.insertRowIfNotExists("dominion",
|
||||||
" FOREIGN KEY (player_uuid) REFERENCES player_name(uuid) ON DELETE CASCADE," +
|
new String[]{
|
||||||
" FOREIGN KEY (dom_id) REFERENCES dominion(id) ON DELETE CASCADE" +
|
"id",
|
||||||
");";
|
"owner",
|
||||||
Dominion.database.query(sql);
|
"name",
|
||||||
|
"world",
|
||||||
sql = "INSERT INTO player_name (" +
|
"x1", "y1", "z1", "x2", "y2", "z2",
|
||||||
"id, uuid, last_known_name" +
|
"parent_dom_id",
|
||||||
") VALUES (" +
|
"join_message",
|
||||||
"-1, '00000000-0000-0000-0000-000000000000', 'server'" +
|
"leave_message"},
|
||||||
") ON CONFLICT DO NOTHING;";
|
new String[]{
|
||||||
Dominion.database.query(sql);
|
"-1",
|
||||||
|
"00000000-0000-0000-0000-000000000000",
|
||||||
sql = "INSERT INTO dominion (" +
|
"根领地",
|
||||||
"id, owner, name, world, x1, y1, z1, x2, y2, z2, parent_dom_id, join_message, leave_message" +
|
"all",
|
||||||
") VALUES (" +
|
"-2147483648", "-2147483648", "-2147483648",
|
||||||
"-1, '00000000-0000-0000-0000-000000000000', '根领地', 'all', " +
|
"2147483647", "2147483647", "2147483647",
|
||||||
"-2147483648, -2147483648, -2147483648, " +
|
"-1",
|
||||||
"2147483647, 2147483647, 2147483647, -1, " +
|
"欢迎",
|
||||||
"'欢迎', '再见'" +
|
"再见"},
|
||||||
") ON CONFLICT DO NOTHING;";
|
0
|
||||||
Dominion.database.query(sql);
|
);
|
||||||
|
|
||||||
for (Flag flag : Flag.getAllDominionFlags()) {
|
for (Flag flag : Flag.getAllDominionFlags()) {
|
||||||
Dominion.database.addColumnIfNotExists("dominion",
|
Dominion.database.addColumnIfNotExists("dominion",
|
||||||
@ -84,16 +97,15 @@ public class DatabaseTables {
|
|||||||
Dominion.database.addColumnIfNotExists("dominion", "tp_location", "TEXT NOT NULL DEFAULT 'default'");
|
Dominion.database.addColumnIfNotExists("dominion", "tp_location", "TEXT NOT NULL DEFAULT 'default'");
|
||||||
|
|
||||||
// 1.31.0
|
// 1.31.0
|
||||||
sql = "CREATE TABLE IF NOT EXISTS privilege_template (" +
|
Dominion.database.createTableIfNotExists(
|
||||||
" id SERIAL PRIMARY KEY," +
|
"privilege_template",
|
||||||
" creator VARCHAR(36) NOT NULL," +
|
new String[]{"id", "creator", "name", "admin"},
|
||||||
" name TEXT NOT NULL," +
|
new String[]{"SERIAL PRIMARY KEY", "VARCHAR(36) NOT NULL", "TEXT NOT NULL", "BOOLEAN NOT NULL DEFAULT FALSE"},
|
||||||
" admin BOOLEAN NOT NULL DEFAULT FALSE," +
|
new String[]{
|
||||||
|
"UNIQUE (creator, name)",
|
||||||
" UNIQUE (creator, name)," +
|
"FOREIGN KEY (creator) REFERENCES player_name(uuid) ON DELETE CASCADE"
|
||||||
" FOREIGN KEY (creator) REFERENCES player_name(uuid) ON DELETE CASCADE" +
|
}
|
||||||
");";
|
);
|
||||||
Dominion.database.query(sql);
|
|
||||||
|
|
||||||
for (Flag flag : Flag.getAllPrivilegeFlags()) {
|
for (Flag flag : Flag.getAllPrivilegeFlags()) {
|
||||||
Dominion.database.addColumnIfNotExists("privilege_template",
|
Dominion.database.addColumnIfNotExists("privilege_template",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
Database:
|
Database:
|
||||||
Type: sqlite # pgsql, sqlite
|
Type: sqlite # pgsql, sqlite, mysql
|
||||||
Host: localhost
|
Host: localhost
|
||||||
Port: 5432
|
Port: 5432
|
||||||
Name: dominion
|
Name: dominion
|
||||||
|
Reference in New Issue
Block a user