Skip to content

Commit 9b9e5d4

Browse files
committed
Versionがずれていた問題を修正
テーブルを変更したので互換性なし
1 parent d2ea812 commit 9b9e5d4

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

src/main/java/dev/felnull/Data/StorageData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public void attach(GroupData group) {
6464
* nullチェック付きで安全に置き換える。
6565
*/
6666
public void updateInventoryData(String pageId) {
67-
InventoryData newData = storageInventory.get(pageId);
67+
InventoryData newData = DataIO.getLatestInventoryData(groupUUID, pageId, groupData.ownerPlugin);
6868
if (pageId == null || newData == null) {
6969
throw new IllegalArgumentException("pageId または newData が null です");
7070
}

src/main/java/dev/felnull/DataIO/DataIO.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,30 @@ public static StorageData loadStorageMetaOnly(UUID groupUUID) {
490490
}
491491
}
492492

493+
//指定したgroupのdb状にあるインベントリデータを持ってくるメソッド
494+
public static InventoryData getLatestInventoryData(UUID groupUUID, String pageId, String pluginName) {
495+
try (Connection conn = db.getConnection()) {
496+
// InventoryDataをDBから取得
497+
Map<String, InventoryData> inventoryDataMap = loadInventoryData(conn, groupUUID, pluginName);
498+
499+
// 指定されたpageIdに対応するInventoryDataを取得
500+
InventoryData invData = inventoryDataMap.get(pageId);
501+
502+
if (invData != null) {
503+
// データが見つかればそのまま返す
504+
Bukkit.getLogger().info("Loaded latest inventory data for pageId: " + pageId);
505+
return invData;
506+
} else {
507+
// pageIdが見つからない場合
508+
Bukkit.getLogger().warning("No inventory data found for pageId: " + pageId);
509+
return null;
510+
}
511+
} catch (SQLException e) {
512+
Bukkit.getLogger().warning("Failed to load latest inventory data: " + e.getMessage());
513+
return null;
514+
}
515+
}
516+
493517

494518
/**
495519
*

src/main/java/dev/felnull/DataIO/TableInitializer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,12 @@ public static void initTables() {
5151
"CREATE TABLE IF NOT EXISTS inventory_table (" +
5252
"group_uuid VARCHAR(255) NOT NULL, " + // 所属グループ
5353
"plugin_name VARCHAR(255) NOT NULL, " + // プラグイン名
54-
"page_id VARCHAR(255) NOT NULL, " + // ページ識別子(例: \"main\")
54+
"page_id VARCHAR(255) NOT NULL, " + // ページ識別子(例: "main")
5555
"display_name VARCHAR(255), " + // GUIの見た目名
5656
"row_count INT NOT NULL, " + // GUIの行数(1~6)
5757
"require_permission TEXT, " + // アクセス制限
58-
"version BIGINT NOT NULL DEFAULT 0" + // ★ページ単位のバージョン管理(楽観ロック用)
58+
"version BIGINT NOT NULL DEFAULT 0, " + // ★ページ単位のバージョン管理(楽観ロック用)
59+
"CONSTRAINT unique_page_group UNIQUE (group_uuid, page_id)" + // group_uuid と page_id の組み合わせにユニーク制約を追加
5960
");"
6061
);
6162

0 commit comments

Comments
 (0)