Skip to content

Commit 7e5fc21

Browse files
committed
TeamTableInitを移設
1 parent e1080ab commit 7e5fc21

File tree

3 files changed

+55
-5
lines changed

3 files changed

+55
-5
lines changed

src/main/java/dev/felnull/pointed/Pointed.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import dev.felnull.pointed.core.database.api.PointServiceImpl;
88
import dev.felnull.pointed.core.listener.ChatListener;
99
import dev.felnull.pointed.core.util.ChatReader;
10+
import dev.felnull.pointed.teams.database.TeamTableInitializer;
1011
import lombok.Getter;
1112
import org.bukkit.Bukkit;
1213
import org.bukkit.configuration.file.FileConfiguration;
@@ -42,6 +43,7 @@ public void onEnable() {
4243
saveDefaultConfig();
4344
setupPlugin();
4445
TableInitializer.initTables();
46+
TeamTableInitializer.initTables();
4547
}
4648

4749
@Override

src/main/java/dev/felnull/pointed/core/database/TableInitializer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ public static void initTables() {
170170

171171
// ========= ユーティリティ =========
172172

173-
private static void addColumnIfNotExists(Connection conn, String baseTable, String columnName, String columnDefinition) {
173+
public static void addColumnIfNotExists(Connection conn, String baseTable, String columnName, String columnDefinition) {
174174
String phys = Names.phys(baseTable); // バッククォートなし実名
175175
try {
176176
boolean exists = false;
@@ -234,7 +234,7 @@ private static void ensureUniqueIndex(Connection conn, String baseTable, String
234234
}
235235
}
236236

237-
private static void ensureIndex(Connection conn, String baseTable, String indexName, String[] columns) {
237+
public static void ensureIndex(Connection conn, String baseTable, String indexName, String[] columns) {
238238
String phys = Names.phys(baseTable);
239239
try {
240240
if (indexExists(conn, phys, indexName)) return;
@@ -259,9 +259,9 @@ private static boolean indexExists(Connection conn, String physTable, String ind
259259
return false;
260260
}
261261

262-
private static void ensureForeignKey(Connection conn, String baseTable, String foreignKeyName,
263-
String col, String refBaseTable, String refCol,
264-
String onDelete, String onUpdate) {
262+
public static void ensureForeignKey(Connection conn, String baseTable, String foreignKeyName,
263+
String col, String refBaseTable, String refCol,
264+
String onDelete, String onUpdate) {
265265
String phys = Names.phys(baseTable);
266266
try {
267267
if (foreignKeyExists(conn, phys, foreignKeyName)) return;
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package dev.felnull.pointed.teams.database;
2+
3+
import dev.felnull.pointed.core.database.Db;
4+
import dev.felnull.pointed.core.database.Names;
5+
6+
import java.sql.Connection;
7+
import java.sql.SQLException;
8+
import java.sql.Statement;
9+
import java.util.logging.Logger;
10+
11+
import static dev.felnull.pointed.core.database.TableInitializer.*;
12+
13+
public class TeamTableInitializer {
14+
private static final Logger LOGGER = Logger.getLogger("Pointed");
15+
public static void initTables() {
16+
try (Connection conn = Db.get().getConnection();
17+
Statement stmt = conn.createStatement()) {
18+
19+
// ========== 1) 骨格だけCREATE(最小列) ==========
20+
// team_meta(骨格)
21+
stmt.executeUpdate("CREATE TABLE IF NOT EXISTS " + Names.t("team_meta") + " (" +
22+
" subject_id BIGINT NOT NULL," +
23+
" PRIMARY KEY (subject_id)" +
24+
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
25+
26+
// ========== 2) 不足カラムを追加 ==========
27+
// team_meta
28+
addColumnIfNotExists(conn, "team_meta", "color_code", "VARCHAR(16) NOT NULL");
29+
addColumnIfNotExists(conn, "team_meta", "sort_order", "INT NOT NULL DEFAULT 0");
30+
addColumnIfNotExists(conn, "team_meta", "active", "TINYINT(1) NOT NULL DEFAULT 1");
31+
32+
// ========== 3) インデックス・制約 ==========
33+
34+
// subjects(id) へのFK。subjects 削除時に team_meta も自動削除
35+
ensureForeignKey(conn, "team_meta", "fk_tm_subject",
36+
"subject_id", "subjects", "id", "CASCADE", "CASCADE");
37+
38+
// 並び順・有効/無効フィルタの補助INDEX
39+
ensureIndex(conn, "team_meta", "idx_tm_sort", new String[]{"sort_order"});
40+
ensureIndex(conn, "team_meta", "idx_tm_active", new String[]{"active"});
41+
42+
LOGGER.info("[Pointed] テーブル初期化完了!");
43+
44+
} catch (SQLException e) {
45+
LOGGER.warning("[Pointed] テーブル初期化中にエラー: " + e.getMessage());
46+
}
47+
}
48+
}

0 commit comments

Comments
 (0)