ローカルにキャッシュ用のDBを追加 #81
|
@ -1 +1,8 @@
|
|||
# WIP
|
||||
|
||||
## メモ
|
||||
- リリース前(=提出前)には`DEBUG_ONLY`で検索してチェック(念のため)
|
||||
|
||||
## リリース前チェック
|
||||
- DBの破壊的マイグレーションを許可するオプションを無効に
|
||||
-
|
|
@ -47,4 +47,8 @@ dependencies {
|
|||
// Retrofit
|
||||
implementation libs.retrofit
|
||||
implementation libs.converter.gson
|
||||
|
||||
// Room
|
||||
implementation libs.androidx.room.runtime
|
||||
annotationProcessor libs.androidx.room.compiler
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package one.nem.kidshift.data.room;
|
||||
|
||||
import androidx.room.Database;
|
||||
import androidx.room.RoomDatabase;
|
||||
|
||||
import one.nem.kidshift.data.room.dao.ChildCacheDao;
|
||||
import one.nem.kidshift.data.room.dao.TaskCacheDao;
|
||||
import one.nem.kidshift.data.room.dao.TaskChildLinkageDao;
|
||||
import one.nem.kidshift.data.room.entity.ChildCacheEntity;
|
||||
import one.nem.kidshift.data.room.entity.TaskCacheEntity;
|
||||
import one.nem.kidshift.data.room.entity.TaskChildLinkageEntity;
|
||||
|
||||
@Database(entities = {ChildCacheEntity.class, TaskCacheEntity.class, TaskChildLinkageEntity.class}, version = 1)
|
||||
public abstract class KidShiftDatabase extends RoomDatabase {
|
||||
|
||||
public abstract ChildCacheDao childCacheDao();
|
||||
|
||||
public abstract TaskCacheDao taskCacheDao();
|
||||
|
||||
public abstract TaskChildLinkageDao taskChildLinkageDao();
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package one.nem.kidshift.data.room;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.room.Room;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.hilt.InstallIn;
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext;
|
||||
import dagger.hilt.components.SingletonComponent;
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent.class)
|
||||
public class KidShiftDatabaseModule {
|
||||
|
||||
@Provides
|
||||
public static KidShiftDatabase provideKidShiftDatabase(@ApplicationContext Context context) {
|
||||
return Room.databaseBuilder(context,
|
||||
KidShiftDatabase.class,
|
||||
"cache.db")
|
||||
.fallbackToDestructiveMigration() // DEBUG_ONLY Migrationがない場合に破壊的なマイグレーションを行うことを許可
|
||||
.fallbackToDestructiveMigrationOnDowngrade() // DEBUG_ONLY ダウングレード時に破壊的なマイグレーションを行うことを許可
|
||||
.build();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
package one.nem.kidshift.data.room.dao;
|
||||
|
||||
public interface ChildCacheDao {
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
package one.nem.kidshift.data.room.dao;
|
||||
|
||||
public interface TaskCacheDao {
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
package one.nem.kidshift.data.room.dao;
|
||||
|
||||
public interface TaskChildLinkageDao {
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package one.nem.kidshift.data.room.entity;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
@Entity(tableName = "child_cache")
|
||||
public class ChildCacheEntity {
|
||||
|
||||
@PrimaryKey
|
||||
@ColumnInfo(name = "id")
|
||||
private String Id;
|
||||
|
||||
@ColumnInfo(name = "display_name")
|
||||
private String displayName;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package one.nem.kidshift.data.room.entity;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
@Entity(tableName = "task_cache")
|
||||
public class TaskCacheEntity {
|
||||
|
||||
@PrimaryKey
|
||||
@ColumnInfo(name = "id")
|
||||
private String Id;
|
||||
|
||||
@ColumnInfo(name = "display_name")
|
||||
private String displayName;
|
||||
|
||||
@ColumnInfo(name = "icon_emoji")
|
||||
private String iconEmoji;
|
||||
|
||||
@ColumnInfo(name = "reward")
|
||||
private int reward;
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package one.nem.kidshift.data.room.entity;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
@Entity(tableName = "task_child_linkage")
|
||||
public class TaskChildLinkageEntity {
|
||||
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
@ColumnInfo(name = "id")
|
||||
private int id;
|
||||
|
||||
@ColumnInfo(name = "task_id")
|
||||
private String taskId;
|
||||
|
||||
@ColumnInfo(name = "child_id")
|
||||
private String childId;
|
||||
|
||||
}
|
|
@ -10,6 +10,7 @@ activity = "1.9.0"
|
|||
constraintlayout = "2.1.4"
|
||||
nav = "2.7.7"
|
||||
retrofit = "2.11.0"
|
||||
room = "2.5.0"
|
||||
|
||||
[libraries]
|
||||
converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" }
|
||||
|
@ -30,6 +31,9 @@ navigation-ui = { group="androidx.navigation", name="navigation-ui", version.ref
|
|||
navigation-dynamic-features-fragment = { group="androidx.navigation", name="navigation-dynamic-features-fragment", version.ref="nav"}
|
||||
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
|
||||
|
||||
androidx-room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" }
|
||||
androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" }
|
||||
|
||||
[plugins]
|
||||
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
||||
androidLibrary = { id = "com.android.library", version.ref = "agp" }
|
||||
|
|
Loading…
Reference in New Issue
Block a user