diff --git a/app/src/main/java/com/hako/friendlists/home/HomeActivity.kt b/app/src/main/java/com/hako/friendlists/view/HomeActivity.kt similarity index 100% rename from app/src/main/java/com/hako/friendlists/home/HomeActivity.kt rename to app/src/main/java/com/hako/friendlists/view/HomeActivity.kt diff --git a/base/src/main/java/com/hako/base/room/Database.kt b/base/src/main/java/com/hako/base/room/Database.kt new file mode 100644 index 0000000..0358461 --- /dev/null +++ b/base/src/main/java/com/hako/base/room/Database.kt @@ -0,0 +1,17 @@ +package com.hako.base.room + +import androidx.room.Database +import androidx.room.RoomDatabase +import com.hako.base.room.dao.AlbumDao +import com.hako.base.room.dao.PhotoDao +import com.hako.base.room.dao.UserDao +import com.hako.base.room.entities.AlbumEntity +import com.hako.base.room.entities.PhotoEntity +import com.hako.base.room.entities.UserEntity + +@Database(entities = [UserEntity::class, AlbumEntity::class, PhotoEntity::class], version = 1, exportSchema = false) +abstract class Database : RoomDatabase() { + abstract fun userDao(): UserDao + abstract fun albumDao(): AlbumDao + abstract fun photoDao(): PhotoDao +} \ No newline at end of file diff --git a/base/src/main/java/com/hako/base/room/dao/AlbumDao.kt b/base/src/main/java/com/hako/base/room/dao/AlbumDao.kt new file mode 100644 index 0000000..9988b89 --- /dev/null +++ b/base/src/main/java/com/hako/base/room/dao/AlbumDao.kt @@ -0,0 +1,27 @@ +package com.hako.base.room.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import com.hako.base.room.entities.AlbumEntity + +@Dao +interface AlbumDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun save(entity: AlbumEntity) + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun saveAll(entities: List) + + @get:Query("SELECT * FROM ${AlbumEntity.TABLE_NAME}") + val all: List + + @Query("SELECT COUNT(*) FROM ${AlbumEntity.TABLE_NAME}") + fun count(page: Int): Int + + @Query("DELETE FROM ${AlbumEntity.TABLE_NAME}") + fun nukeDatabase() + +} diff --git a/base/src/main/java/com/hako/base/room/dao/PhotoDao.kt b/base/src/main/java/com/hako/base/room/dao/PhotoDao.kt new file mode 100644 index 0000000..2f696de --- /dev/null +++ b/base/src/main/java/com/hako/base/room/dao/PhotoDao.kt @@ -0,0 +1,27 @@ +package com.hako.base.room.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import com.hako.base.room.entities.PhotoEntity + +@Dao +interface PhotoDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun save(entity: PhotoEntity) + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun saveAll(entities: List) + + @get:Query("SELECT * FROM ${PhotoEntity.TABLE_NAME}") + val all: List + + @Query("SELECT COUNT(*) FROM ${PhotoEntity.TABLE_NAME}") + fun count(page: Int): Int + + @Query("DELETE FROM ${PhotoEntity.TABLE_NAME}") + fun nukeDatabase() + +} diff --git a/base/src/main/java/com/hako/base/room/dao/UserDao.kt b/base/src/main/java/com/hako/base/room/dao/UserDao.kt new file mode 100644 index 0000000..3546001 --- /dev/null +++ b/base/src/main/java/com/hako/base/room/dao/UserDao.kt @@ -0,0 +1,27 @@ +package com.hako.base.room.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import com.hako.base.room.entities.UserEntity + +@Dao +interface UserDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun save(entity: UserEntity) + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun saveAll(entities: List) + + @get:Query("SELECT * FROM ${UserEntity.TABLE_NAME}") + val all: List + + @Query("SELECT COUNT(*) FROM ${UserEntity.TABLE_NAME}") + fun count(page: Int): Int + + @Query("DELETE FROM ${UserEntity.TABLE_NAME}") + fun nukeDatabase() + +} diff --git a/base/src/main/java/com/hako/base/room/entities/Album.kt b/base/src/main/java/com/hako/base/room/entities/Album.kt new file mode 100644 index 0000000..48d664a --- /dev/null +++ b/base/src/main/java/com/hako/base/room/entities/Album.kt @@ -0,0 +1,17 @@ +package com.hako.base.room.entities + +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey + +@Entity(tableName = AlbumEntity.TABLE_NAME, indices = [Index(value = ["id"], unique = true)]) +data class AlbumEntity( + @PrimaryKey + val id: Int, + val userId: Int, + val title: String +) { + companion object { + const val TABLE_NAME = "albums" + } +} \ No newline at end of file diff --git a/base/src/main/java/com/hako/base/room/entities/Photos.kt b/base/src/main/java/com/hako/base/room/entities/Photos.kt new file mode 100644 index 0000000..01c840a --- /dev/null +++ b/base/src/main/java/com/hako/base/room/entities/Photos.kt @@ -0,0 +1,19 @@ +package com.hako.base.room.entities + +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey + +@Entity(tableName = PhotoEntity.TABLE_NAME, indices = [Index(value = ["id"], unique = true)]) +data class PhotoEntity( + @PrimaryKey + val id: Int, + val albumId: Int, + val title: String, + val photoUrl: String, + val thumbnailUrl: String +) { + companion object { + const val TABLE_NAME = "photos" + } +} \ No newline at end of file diff --git a/base/src/main/java/com/hako/base/room/entities/User.kt b/base/src/main/java/com/hako/base/room/entities/User.kt new file mode 100644 index 0000000..7f847bc --- /dev/null +++ b/base/src/main/java/com/hako/base/room/entities/User.kt @@ -0,0 +1,20 @@ +package com.hako.base.room.entities + +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey + +@Entity(tableName = UserEntity.TABLE_NAME, indices = [Index(value = ["id"], unique = true)]) +data class UserEntity( + @PrimaryKey + val id: Int, + val realName: String, + val userName: String, + val email: String, + val phone: String, + val website: String +) { + companion object { + const val TABLE_NAME = "users" + } +} \ No newline at end of file