From a8226de24955030047169b5f6ab090f696fd74b3 Mon Sep 17 00:00:00 2001 From: sysnote8main Date: Mon, 6 Jan 2025 10:18:16 +0900 Subject: [PATCH 1/5] chore: write readme for contribution & production --- README.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/README.md b/README.md index dfaf261..09ebfdf 100644 --- a/README.md +++ b/README.md @@ -1 +1,45 @@ # v2 is under development. Don't use this!!! + +## Todo +- `/kdstatus refresh-cache`の実装 + +## 開発上の注意 +- パッチバージョンで破壊的変更を行わないでください。 +- 適切なバージョニングを心がけてください。 +- APIの仕様変更をする場合\ +すぐに、APIからメソッドを消すのではなく、`@Deprecated`を2つ以上先のマイナーバージョンに向けて付けること + +## APIの返り値について +- 成功時には、その値が返ってきます +- 失敗時には、`null`を返します。 + +## APIの仕様 +- このAPIは読み取り専用であり、書き込み等は行えない。 +- APIの使用時には、毎回`KDStatusReloaded.getAPI()`を行うことが推奨される。\ +(プラグインの再読み込み等により、内部の値が変化している可能性があるため) +- APIは、同じマイナーバージョン内では破壊的変更が行われることはない。 + +## 運用上の注意 +- APIのキャッシュ等は時間ベースではなく、変化したタイミングで行なっている。 \ +そのため、データベースを直接書き換える等の操作が行われた場合には手動で`/kdstatus refresh-cache`を行う必要性がある。 +- データベースへの接続のヘルスチェックはconfig内で設定された間隔で行います\ +状況に応じて、適切な間隔に設定してください。 + +## データベース切り替え +このKDStatusReloadedでは、複数のデータベースがサポートされており、切り替えることができます。\ +切り替えコマンドは、`/kdstatus switch-db `となっています。\ +db-aliasは、 + +| データベース名 | db-alias | +|---------|----------| +| MySQL | mysql | +| MariaDB | mariadb | +| SQLite3 | sqlite3 | +となっています。 + +## 緊急時 +- メインデータベースへ接続が不可能になった場合には、sqlite3を用いて、ローカルに自動的に保存されます。 +- もしも、APIも何もかも死んだ時には、`/kdstatus force-reload`をかけることでこれらのタスクが走ります。 + - データベースへ再接続 + - キャッシュの再取得 + - APIのリフレッシュ From e5df9f8629449cbaecdee52f3a1748b9a5514015 Mon Sep 17 00:00:00 2001 From: sysnote8main Date: Mon, 6 Jan 2025 10:35:58 +0900 Subject: [PATCH 2/5] remove: lines of api return value --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 09ebfdf..9049b09 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,6 @@ - APIの仕様変更をする場合\ すぐに、APIからメソッドを消すのではなく、`@Deprecated`を2つ以上先のマイナーバージョンに向けて付けること -## APIの返り値について -- 成功時には、その値が返ってきます -- 失敗時には、`null`を返します。 - ## APIの仕様 - このAPIは読み取り専用であり、書き込み等は行えない。 - APIの使用時には、毎回`KDStatusReloaded.getAPI()`を行うことが推奨される。\ From af1d3876644eb6cb44164813029fff65cd2371ae Mon Sep 17 00:00:00 2001 From: sysnote8main Date: Mon, 6 Jan 2025 10:43:16 +0900 Subject: [PATCH 3/5] fix: javadoc for getRank method --- src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java b/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java index 4fedda4..2d15e3c 100644 --- a/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java +++ b/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java @@ -25,7 +25,7 @@ interface KDAPIInterface { /** * Get specific user's ranking * @param uuid UUID of player - * @param unit Name of player + * @param unit Unit of ranking * @return returns ranking order. If failed, returns -1. */ int getRank(@NotNull UUID uuid, @NotNull TimeUnit unit); From 7af89a52fd9c61789941ab322a35d6fbd69f2b3c Mon Sep 17 00:00:00 2001 From: sysnote8main Date: Mon, 6 Jan 2025 10:49:47 +0900 Subject: [PATCH 4/5] feat: add different userdata getter --- .../jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java b/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java index 2d15e3c..1ca3e2b 100644 --- a/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java +++ b/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java @@ -14,13 +14,21 @@ */ interface KDAPIInterface { /** - * Get specific user's data + * Get specific user's data. If data wasn't found, create new userdata. * @param uuid UUID of player * @param name Name of player + * @return returns KDUserData. + */ + @NotNull + KDUserData getOrCreateUserData(@NotNull UUID uuid, @NotNull String name); + + /** + * Get specific user's data + * @param uuid UUID of player * @return returns KDUserData. If failed, returns null. */ @Nullable - KDUserData getUserData(@NotNull UUID uuid, @NotNull String name); + KDUserData getUserData(@NotNull UUID uuid); /** * Get specific user's ranking From dfcdd3eca6dc63e87fc8297e3eed8493e562798e Mon Sep 17 00:00:00 2001 From: sysnote8main Date: Mon, 6 Jan 2025 11:00:13 +0900 Subject: [PATCH 5/5] feat: add wrapper method for easy api implementation --- .../lgw/kdstatus/api/KDAPIInterface.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java b/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java index 1ca3e2b..f4f8e08 100644 --- a/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java +++ b/src/main/java/jp/azisaba/lgw/kdstatus/api/KDAPIInterface.java @@ -45,4 +45,28 @@ interface KDAPIInterface { * @return List of {@link KillRankingData}. If failed, returns empty list. */ List getTopKillRankingData(@NotNull TimeUnit unit, int maxSize); + + // === Won't need to implement each === + /** + * Get specific user's kill count + * @param uuid UUID of player + * @param unit Unit of ranking + * @return returns kill count. If failed, returns -1. + */ + default int getKills(@NotNull UUID uuid, @NotNull TimeUnit unit) { + var userdata = getUserData(uuid); + if(userdata == null) return -1; + return userdata.getKills(unit); + } + + /** + * Get specific user's death count + * @param uuid UUID of player + * @return returns total death count. If failed, returns -1 + */ + default int getDeaths(@NotNull UUID uuid) { + var userdata = getUserData(uuid); + if(userdata == null) return -1; + return userdata.getDeaths(); + } }