ApiRoomDatabase.kt 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package io.nexilis.service.data.rooms
  2. import android.content.Context
  3. import androidx.room.Database
  4. import androidx.room.Room
  5. import androidx.room.RoomDatabase
  6. import androidx.room.migration.Migration
  7. import androidx.sqlite.db.SupportSQLiteDatabase
  8. import io.nexilis.service.data.daos.*
  9. import io.nexilis.service.data.entities.*
  10. @Database(
  11. // Declare all Entity here..
  12. entities = [
  13. Buddy::class,
  14. CallCenterHistory::class,
  15. DiscussionForum::class,
  16. Follow::class,
  17. Form::class,
  18. FormItem::class,
  19. Group::class,
  20. GroupMember::class,
  21. Inquiry::class,
  22. LinkPreview::class,
  23. Message::class,
  24. MessageFavorite::class,
  25. MessageStatus::class,
  26. MessageSummary::class,
  27. Prefs::class,
  28. Pull::class,
  29. RemoteKey::class,
  30. WorkingArea::class
  31. ], version = 1, exportSchema = false
  32. )
  33. abstract class ApiRoomDatabase : RoomDatabase() {
  34. // Declare all Dao here..
  35. abstract fun buddyDao(): BuddyDao
  36. abstract fun callCenterHistoryDao(): CallCenterHistoryDao
  37. abstract fun discussionForumDao(): DiscussionForumDao
  38. abstract fun followDao(): FollowDao
  39. abstract fun formDao(): FormDao
  40. abstract fun formItemDao(): FormItemDao
  41. abstract fun groupDao(): GroupDao
  42. abstract fun groupMemberDao(): GroupMemberDao
  43. abstract fun inquiryDao(): InquiryDao
  44. abstract fun linkPreviewDao(): LinkPreviewDao
  45. abstract fun messageDao(): MessageDao
  46. abstract fun messageStatusDao(): MessageStatusDao
  47. abstract fun messageSummaryDao(): MessageSummaryDao
  48. abstract fun prefsDao(): PrefsDao
  49. abstract fun pullDao(): PullDao
  50. abstract fun remoteKeyDao(): RemoteKeyDao
  51. abstract fun workingAreaDao(): WorkingAreaDao
  52. class ApiDatabaseCallback : Callback() {
  53. override fun onCreate(db: SupportSQLiteDatabase) {
  54. super.onCreate(db)
  55. }
  56. }
  57. companion object {
  58. @Volatile
  59. private var INSTANCE: ApiRoomDatabase? = null
  60. fun getDatabase(context: Context): ApiRoomDatabase {
  61. return INSTANCE ?: synchronized(this) {
  62. val instance = Room.databaseBuilder(
  63. context.applicationContext,
  64. ApiRoomDatabase::class.java,
  65. "main"
  66. )
  67. .addCallback(ApiDatabaseCallback())
  68. .addMigrations(migration_1_to_2)
  69. .build()
  70. INSTANCE = instance
  71. instance
  72. }
  73. }
  74. private val migration_1_to_2 = object : Migration(1, 2) {
  75. override fun migrate(db: SupportSQLiteDatabase) {
  76. db.execSQL("ALTER TABLE `Group` ADD COLUMN `be` TEXT NOT NULL")
  77. }
  78. }
  79. }
  80. }