-
Notifications
You must be signed in to change notification settings - Fork 0
Use DataStore
皐月なふ (Nafu Satsuki) edited this page Jun 20, 2022
·
1 revision
DataStoreを使用することで恒久的にデータを保存する事ができます。
保存されたデータは設定ファイル内で指定されたデータベースに保存されます。
この機能を使用することで難しいSQL構文を覚えることなく簡易的にデータベースを使用することができます。
DataStoreを使用するには最初にデータソースを作成する必要があります。
データソースの名前、データソース内のデータ構造を登録します。
一度作成したデータソースは後で構造を変更できない事に注意してください。
// create datastore
try {
var builder = getLauncher().getDataStoreManager().createDataStoreBuilder();
builder.storeName("SettingsStore");
builder.addIndex(String.class, "lang");
builder.addIndex(Boolean.class, "sendWelcomeMessage"); // Camel case
builder.addIndex(String.class, "welcome_message"); // Snake case
DataStore settingsStore = builder.build();
getLauncher().getDataStoreManager().registerDataStore(settingsStore);
} catch (DataStoreGenerateException e) {
getModuleLogger().error("Failed to create datastore.", e);
}
DataStoreのデータ型は以下のようにSQLのデータ型と対応しています。
Java class | SQL Type |
---|---|
String.class | TEXT |
Integer.class | INTEGER |
Long.class | BIGINT |
Double.class | DOUBLE |
Boolean.class | BOOLEAN |
DataStoreの名前と項目名は必ずCamel CaseかSnake Caseに従ってください。
Camel Caseを使用した場合は内部的にSnake Caseに変換されます。
DataStoreはギルドIDごとにデータを管理しています。
DataStoreにデータを保存するときは1度すべてのデータを保存する必要があります。
データを保存するときはDataStoreを作成する時に指定した項目の順番で指定してください。
また、複数回初期化を実行しようとするとエラーが発生する事にも注意する必要があります。
getLauncher().getDataStoreManager().getDataStore("SettingsStore").registerStoreData(guildId, "ja_JP", true, "Welcome to my discord server!!");
保存されているデータの一部を更新する場合は以下のように行うことができます。
getLauncher().getDataStoreManager().getDataStore("SettingsStore").saveStoreData(guildId, "lang", "en_US");
DataStoreに保存されているデータを取得するには以下のように行います。
現時点では保存されたすべてのデータを一度に取得することはできません。
String lang = getLauncher().getDataStoreManager().getDataStore("SettingsStore").getStoreData(guildId, "lang");
DataStoreに保存されているデータを削除するには以下のように行います。
getLauncher().getDataStoreManager().getDataStore("SettingsStore").deleteStoredData(guildId);