From c3cead59934c8c5221694940fc83be57fa50ac20 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Nov 2020 01:40:42 +0530 Subject: [PATCH 1/6] data: move into app module Signed-off-by: Harsh Shandilya --- .idea/gradle.xml | 1 - app/build.gradle | 5 ++++- .../msfjarvis/lobsters/data/model/LobstersEntity.kt | 0 .../lobsters/data/model/SavedLobstersEntity.kt | 0 .../data/source/LobstersApiTypeConverters.kt | 0 .../dev/msfjarvis/lobsters/data/source/PostsDao.kt | 0 .../msfjarvis/lobsters/data/source/PostsDatabase.kt | 0 .../msfjarvis/lobsters/data/source/SavedPostsDao.kt | 0 data/.gitignore | 1 - data/build.gradle | 12 ------------ data/src/main/AndroidManifest.xml | 2 -- settings.gradle | 1 - 12 files changed, 4 insertions(+), 18 deletions(-) rename {data => app}/src/main/java/dev/msfjarvis/lobsters/data/model/LobstersEntity.kt (100%) rename {data => app}/src/main/java/dev/msfjarvis/lobsters/data/model/SavedLobstersEntity.kt (100%) rename {data => app}/src/main/java/dev/msfjarvis/lobsters/data/source/LobstersApiTypeConverters.kt (100%) rename {data => app}/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDao.kt (100%) rename {data => app}/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt (100%) rename {data => app}/src/main/java/dev/msfjarvis/lobsters/data/source/SavedPostsDao.kt (100%) delete mode 100644 data/.gitignore delete mode 100644 data/build.gradle delete mode 100644 data/src/main/AndroidManifest.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 56aa008e..c8275882 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -12,7 +12,6 @@ diff --git a/app/build.gradle b/app/build.gradle index 98cdc236..6e9aef7f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ dependencies { kapt "com.google.dagger:hilt-compiler:$hilt_dagger_version" kapt "androidx.hilt:hilt-compiler:$hilt_androidx_version" - implementation(project(":data")) + kapt "androidx.room:room-compiler:$room_version" implementation(project(":lobsters-api")) implementation(project(":model")) implementation "androidx.core:core-ktx:$core_version" @@ -83,9 +83,12 @@ dependencies { implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" implementation "androidx.navigation:navigation-compose:$nav_compose_version" + implementation "androidx.room:room-runtime:$room_version" + implementation "androidx.room:room-ktx:$room_version" implementation "androidx.ui:ui-tooling:$compose_version" implementation "com.google.android.material:material:$material_version" implementation "com.google.dagger:hilt-android:$hilt_dagger_version" + implementation "com.squareup.moshi:moshi:$moshi_version" implementation "dev.chrisbanes.accompanist:accompanist-coil:$accompanist_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" implementation "saschpe.android:customtabs:$customtabs_version" diff --git a/data/src/main/java/dev/msfjarvis/lobsters/data/model/LobstersEntity.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/model/LobstersEntity.kt similarity index 100% rename from data/src/main/java/dev/msfjarvis/lobsters/data/model/LobstersEntity.kt rename to app/src/main/java/dev/msfjarvis/lobsters/data/model/LobstersEntity.kt diff --git a/data/src/main/java/dev/msfjarvis/lobsters/data/model/SavedLobstersEntity.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/model/SavedLobstersEntity.kt similarity index 100% rename from data/src/main/java/dev/msfjarvis/lobsters/data/model/SavedLobstersEntity.kt rename to app/src/main/java/dev/msfjarvis/lobsters/data/model/SavedLobstersEntity.kt diff --git a/data/src/main/java/dev/msfjarvis/lobsters/data/source/LobstersApiTypeConverters.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/source/LobstersApiTypeConverters.kt similarity index 100% rename from data/src/main/java/dev/msfjarvis/lobsters/data/source/LobstersApiTypeConverters.kt rename to app/src/main/java/dev/msfjarvis/lobsters/data/source/LobstersApiTypeConverters.kt diff --git a/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDao.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDao.kt similarity index 100% rename from data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDao.kt rename to app/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDao.kt diff --git a/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt similarity index 100% rename from data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt rename to app/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt diff --git a/data/src/main/java/dev/msfjarvis/lobsters/data/source/SavedPostsDao.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/source/SavedPostsDao.kt similarity index 100% rename from data/src/main/java/dev/msfjarvis/lobsters/data/source/SavedPostsDao.kt rename to app/src/main/java/dev/msfjarvis/lobsters/data/source/SavedPostsDao.kt diff --git a/data/.gitignore b/data/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/data/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/data/build.gradle b/data/build.gradle deleted file mode 100644 index 81698f83..00000000 --- a/data/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -plugins { - id 'kotlin-kapt' -} - -dependencies { - implementation project(":model") - kapt "androidx.room:room-compiler:$room_version" - api "androidx.room:room-runtime:$room_version" - implementation "androidx.room:room-ktx:$room_version" - implementation "com.squareup.moshi:moshi:$moshi_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" -} diff --git a/data/src/main/AndroidManifest.xml b/data/src/main/AndroidManifest.xml deleted file mode 100644 index 2357d0f8..00000000 --- a/data/src/main/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/settings.gradle b/settings.gradle index f1785d43..06174a37 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,5 +1,4 @@ rootProject.name = "lobste.rs" include ':app' -include ':data' include ':lobsters-api' include ':model' From f367c79e8edd97046853489358e7c435631bb072 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Nov 2020 01:42:10 +0530 Subject: [PATCH 2/6] app: turn on schema generation Signed-off-by: Harsh Shandilya --- app/build.gradle | 5 + .../2.json | 198 ++++++++++++++++++ .../lobsters/data/source/PostsDatabase.kt | 2 +- 3 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 app/schemas/dev.msfjarvis.lobsters.data.source.PostsDatabase/2.json diff --git a/app/build.gradle b/app/build.gradle index 6e9aef7f..1ef98102 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,6 +11,11 @@ android { defaultConfig { applicationId "dev.msfjarvis.lobsters" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + javaCompileOptions { + annotationProcessorOptions { + arguments += ["room.schemaLocation": "$projectDir/schemas".toString()] + } + } } buildTypes { diff --git a/app/schemas/dev.msfjarvis.lobsters.data.source.PostsDatabase/2.json b/app/schemas/dev.msfjarvis.lobsters.data.source.PostsDatabase/2.json new file mode 100644 index 00000000..977d35a6 --- /dev/null +++ b/app/schemas/dev.msfjarvis.lobsters.data.source.PostsDatabase/2.json @@ -0,0 +1,198 @@ +{ + "formatVersion": 1, + "database": { + "version": 2, + "identityHash": "5146546ebef999689c82a1b89e667eb4", + "entities": [ + { + "tableName": "lobsters_posts", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`shortId` TEXT NOT NULL, `shortIdUrl` TEXT NOT NULL, `createdAt` TEXT NOT NULL, `title` TEXT NOT NULL, `url` TEXT NOT NULL, `score` INTEGER NOT NULL, `flags` INTEGER NOT NULL, `commentCount` INTEGER NOT NULL, `description` TEXT NOT NULL, `commentsUrl` TEXT NOT NULL, `submitterUser` TEXT NOT NULL, `tags` TEXT NOT NULL, `isLiked` INTEGER NOT NULL, PRIMARY KEY(`shortId`))", + "fields": [ + { + "fieldPath": "post.shortId", + "columnName": "shortId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.shortIdUrl", + "columnName": "shortIdUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.createdAt", + "columnName": "createdAt", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.score", + "columnName": "score", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "post.flags", + "columnName": "flags", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "post.commentCount", + "columnName": "commentCount", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "post.description", + "columnName": "description", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.commentsUrl", + "columnName": "commentsUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.submitterUser", + "columnName": "submitterUser", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.tags", + "columnName": "tags", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.isLiked", + "columnName": "isLiked", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "shortId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "lobsters_saved_posts", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`shortId` TEXT NOT NULL, `shortIdUrl` TEXT NOT NULL, `createdAt` TEXT NOT NULL, `title` TEXT NOT NULL, `url` TEXT NOT NULL, `score` INTEGER NOT NULL, `flags` INTEGER NOT NULL, `commentCount` INTEGER NOT NULL, `description` TEXT NOT NULL, `commentsUrl` TEXT NOT NULL, `submitterUser` TEXT NOT NULL, `tags` TEXT NOT NULL, `isLiked` INTEGER NOT NULL, PRIMARY KEY(`shortId`))", + "fields": [ + { + "fieldPath": "post.shortId", + "columnName": "shortId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.shortIdUrl", + "columnName": "shortIdUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.createdAt", + "columnName": "createdAt", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.score", + "columnName": "score", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "post.flags", + "columnName": "flags", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "post.commentCount", + "columnName": "commentCount", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "post.description", + "columnName": "description", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.commentsUrl", + "columnName": "commentsUrl", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.submitterUser", + "columnName": "submitterUser", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.tags", + "columnName": "tags", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "post.isLiked", + "columnName": "isLiked", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "shortId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '5146546ebef999689c82a1b89e667eb4')" + ] + } +} \ No newline at end of file diff --git a/app/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt index d1e8a36e..54f6425c 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt @@ -12,7 +12,7 @@ import dev.msfjarvis.lobsters.data.model.SavedLobstersEntity SavedLobstersEntity::class ], version = 2, - exportSchema = false, + exportSchema = true, ) @TypeConverters( LobstersApiTypeConverters::class, From 4b5c1e6d15dc864651bfefa24ac522b54d194c74 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Nov 2020 01:45:35 +0530 Subject: [PATCH 3/6] app: add roomigrant dependencies Signed-off-by: Harsh Shandilya --- .idea/jarRepositories.xml | 5 +++++ app/build.gradle | 6 ++++++ build.gradle | 1 + 3 files changed, 12 insertions(+) diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index a5f05cd8..23704740 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -21,5 +21,10 @@