|
| 1 | +# BetterStorage API ドキュメント |
| 2 | + |
| 3 | +このドキュメントは BetterStorage の外部連携用APIについて記述しています。 |
| 4 | + |
| 5 | +## 主要クラスと構造 |
| 6 | + |
| 7 | +### GroupData |
| 8 | +- `String groupName`: グループ名(表示名) |
| 9 | +- `String groupUUID`: 内部識別用UUID(固定) |
| 10 | +- `boolean isPrivate`: 個人用グループかどうか |
| 11 | +- `String ownerPlugin`: このグループを所有するプラグイン名 |
| 12 | +- `long version`: バージョン(保存・競合検出用) |
| 13 | +- `StorageData storageData`: ストレージ全体のデータ |
| 14 | + |
| 15 | +### StorageData |
| 16 | +- `Map<String, InventoryData> storageInventory`: ページIDをキーとしたインベントリ情報 |
| 17 | +- `double bankMoney`: 銀行資金 |
| 18 | +- `boolean requireBankPermission`: 銀行利用に権限が必要かどうか |
| 19 | + |
| 20 | +### InventoryData |
| 21 | +- `String pageId`: インベントリページのID |
| 22 | +- `String displayName`: 表示名 |
| 23 | +- `int rowCount`: 行数(1〜6) |
| 24 | +- `boolean requirePermission`: 権限が必要か |
| 25 | +- `Map<Integer, ItemStack> itemSlot`: スロット番号とItemStackのマップ |
| 26 | +- `List<String> userTags`: タグのリスト |
| 27 | +- `long version`: ページ単位でのバージョン番号 |
| 28 | + |
| 29 | +--- |
| 30 | + |
| 31 | +## DataIO クラスのメソッド一覧 |
| 32 | + |
| 33 | +### static GroupData loadGroupData(String groupName) |
| 34 | +指定したグループ名のデータをデータベースから読み込みます。 |
| 35 | + |
| 36 | +### static GroupData loadGroupData(UUID groupUUID) |
| 37 | +UUIDベースでグループデータを読み込みます。 |
| 38 | + |
| 39 | +### static void saveGroupData(GroupData groupData) |
| 40 | +グループ全体のデータを保存します(全ページ・メンバー・タグ含む)。 |
| 41 | + |
| 42 | +### static void saveGroupData(GroupData groupData, long expectedVersion) |
| 43 | +指定されたバージョンと一致する場合のみ保存します(楽観的排他制御)。 |
| 44 | + |
| 45 | +### static boolean saveInventoryOnly(DatabaseManager db, GroupData groupData, String pageId) |
| 46 | +ページ単位でインベントリだけを保存。バージョン整合性チェックも含まれます。 |
| 47 | + |
| 48 | +--- |
| 49 | + |
| 50 | +## Rollback & DiffLog |
| 51 | + |
| 52 | +### RollbackLogManager |
| 53 | +- `saveRollbackLog(GroupData groupData)`: グループ全体の完全スナップショットを保存 |
| 54 | +- `restoreGroupFromRollback(String groupUUID, LocalDateTime timestamp)`: 指定時点のバックアップから復元 |
| 55 | +- `getRollbackTimestamps(String groupUUID)`: すべてのバックアップ時刻を取得 |
| 56 | + |
| 57 | +### DiffLogManager |
| 58 | +- `saveDiffLogs(DatabaseManager db, GroupData groupData)`: 差分ログ(ページごと)を保存 |
| 59 | +- `restoreGroupFromDiffLog(DatabaseManager db, GroupData groupData, LocalDateTime timestamp)`: 差分ログから復元(ページごと) |
| 60 | + |
| 61 | +--- |
| 62 | + |
| 63 | +## タグ検索・ユーザーアクセス判定(予定機能) |
| 64 | + |
| 65 | +### StorageAPI(将来追加予定) |
| 66 | +- タグに基づくページフィルタリング |
| 67 | +- ユーザーの所属グループ・権限判定 |
| 68 | +- 他プラグインからのCRUD操作(安全なラッパー) |
| 69 | + |
| 70 | +--- |
| 71 | + |
| 72 | +## データベース構造 |
| 73 | +(詳しくは `TableInitializer` を参照) |
| 74 | +- group_table |
| 75 | +- group_member_table |
| 76 | +- storage_table |
| 77 | +- inventory_table |
| 78 | +- inventory_item_table |
| 79 | +- tag_table |
| 80 | +- inventory_item_log |
| 81 | +- rollback_log |
| 82 | + |
| 83 | +--- |
| 84 | + |
| 85 | +## 注意 |
| 86 | +- 外部プラグインは `GroupManager.getGroupByUUID(UUID)` または `GroupManager.getGroupByName(String)` を通じて `GroupData` を取得可能。 |
| 87 | +- `GroupData` を直接変更した場合、`DataIO.saveGroupData()` によって保存が必要。 |
| 88 | +- 差分保存の際は `saveInventoryOnly` を使うと効率的。 |
| 89 | + |
| 90 | +--- |
| 91 | + |
| 92 | +## バージョン |
| 93 | +BetterStorage 1.0.6-SNAPSHOT 用API仕様書 |
| 94 | + |
0 commit comments