Merge with Mihon: SQLDelight driver, transaction cleanup, and Gradle 9.5 #406
Open
Dark25 wants to merge 41 commits into
Open
Merge with Mihon: SQLDelight driver, transaction cleanup, and Gradle 9.5 #406Dark25 wants to merge 41 commits into
Dark25 wants to merge 41 commits into
Conversation
(cherry picked from commit 34fa9138d9b92b2f065a242a79ccb67f70a17c7b)
…(#3232) (cherry picked from commit e676c8e6e15181e0eb8ddbd8dc4a9ca8e438375e)
(cherry picked from commit d68347f5fbc897c78ff255c1c343f90c161ca6f6)
(cherry picked from commit cb6daa5e4ca4830f9818ad296a6413f089f81559)
(cherry picked from commit 5b32a990a2380da119713f07169b1b7296a0ccb0)
…3256) (cherry picked from commit 4faf89fc6fd9c5ab5786029ed1aebabeb0fd8e73)
(cherry picked from commit 38ccd7d5fc07cb7ddc353835ec57e88f43488301)
(cherry picked from commit a2f3ec94aa2a079cbcbcf54aaaa5f1d1f1a8a4e4)
…#3270) `sqldelight-androidx-driver` has it's own transaction management (cherry picked from commit 8e0c911f93e60db35dcbe2a9103ac6ea0d803e29)
…h last_insert_rowid in insert statements
There was a problem hiding this comment.
Pull request overview
This PR syncs Animetail’s build and data layers with Mihon’s recent changes, primarily upgrading the Gradle/AGP toolchain and migrating SQLDelight usage toward async APIs while cleaning up insert/transaction patterns across repositories.
Changes:
- Upgraded build tooling (Gradle wrapper/scripts, AGP/Kotlin versions, compile SDK) and adjusted CI workflows accordingly.
- Enabled SQLDelight async code generation and refactored multiple repositories to use async query/Flow helpers.
- Updated many SQLDelight
insertstatements to returnlast_insert_rowid()directly from the insert query (removing separate “select last inserted id” statements).
Reviewed changes
Copilot reviewed 51 out of 53 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| source-local/build.gradle.kts | KMP Android target tweaks; add withHostTest workaround; remove instrumentation runner config block. |
| source-api/build.gradle.kts | Update Android optimization/keep rules publishing; add withHostTest workaround. |
| i18n/build.gradle.kts | Add withHostTest workaround for KMP Android target. |
| i18n-tail/build.gradle.kts | Remove Android lint disable block. |
| i18n-aniyomi/build.gradle.kts | Remove lint disables and preBuild dependency; rely on androidComponents generated res wiring. |
| gradlew.bat | Update Windows wrapper behavior around setlocal/exit handling. |
| gradlew | Update referenced Gradle template URL hash. |
| gradle/wrapper/gradle-wrapper.properties | Bump Gradle distribution to 9.5.0; add retry-related properties. |
| gradle/mihon.versions.toml | Bump Android compile SDK version. |
| gradle/libs.versions.toml | Bump many dependency/plugin versions; add Android KMP library plugin; adjust SQLDelight + image-decoder coordinates. |
| gradle/build-logic/src/main/kotlin/PluginKotlinMultiplatform.kt | Switch to Android KMP library plugin and configure Android target SDK/desugaring via build-logic. |
| gradle/build-logic/src/main/kotlin/PluginComposeAndroid.kt | Add helper to configure buildFeatures via CommonExtension. |
| gradle/build-logic/src/main/kotlin/PluginAndroidBase.kt | Inline Android SDK/desugaring defaults into base plugin; add helper extension funcs. |
| gradle/build-logic/src/main/kotlin/mihon/gradle/extensions/Project.kt | Change Project.android {} helper to configure via CommonExtension. |
| gradle/build-logic/src/main/kotlin/mihon/gradle/configurations/Android.kt | Delete old configureAndroid() implementation (moved into plugins). |
| gradle.properties | Remove deprecated/obsolete AndroidX + KMP source set layout properties. |
| domain/build.gradle.kts | Add compileOnly Compose BOM/runtime annotation dependency alignment. |
| data/src/main/sqldelightanime/dataanime/saved_search.sq | Make insert return last_insert_rowid() within the insert query block. |
| data/src/main/sqldelightanime/dataanime/feed_saved_search.sq | Same insert/rowid pattern update; remove standalone rowid query. |
| data/src/main/sqldelightanime/dataanime/episodes.sq | Same insert/rowid pattern update; remove standalone rowid query. |
| data/src/main/sqldelightanime/dataanime/custom_buttons.sq | Same insert/rowid pattern update; remove standalone rowid query. |
| data/src/main/sqldelightanime/dataanime/categories.sq | Same insert/rowid pattern update; remove standalone rowid query. |
| data/src/main/sqldelightanime/dataanime/animes.sq | Same insert/rowid pattern update; remove standalone rowid query. |
| data/src/main/sqldelight/data/mangas.sq | Convert insert to return rowid; add insertNetworkManga query for upsert-like behavior. |
| data/src/main/sqldelight/data/chapters.sq | Convert insert to return rowid; remove standalone rowid query. |
| data/src/main/sqldelight/data/categories.sq | Convert insert to return rowid; remove standalone rowid query. |
| data/src/main/java/tachiyomi/data/updates/manga/MangaUpdatesRepositoryImpl.kt | Migrate from handler wrapper to direct Database + async query/Flow helpers. |
| data/src/main/java/tachiyomi/data/source/manga/MangaSourceRepositoryImpl.kt | Migrate flows to Database queries using new subscribeToList extension. |
| data/src/main/java/tachiyomi/data/source/anime/SavedSearchRepositoryImpl.kt | Use insert query return value directly instead of separate last-row-id query. |
| data/src/main/java/tachiyomi/data/source/anime/FeedSavedSearchRepositoryImpl.kt | Use insert query return value directly; adjust partial update batching behavior. |
| data/src/main/java/tachiyomi/data/QueryExtension.kt | Add Flow subscription helpers using SQLDelight async coroutines APIs. |
| data/src/main/java/tachiyomi/data/items/episode/EpisodeRepositoryImpl.kt | Use insert query return value directly for assigning inserted IDs. |
| data/src/main/java/tachiyomi/data/items/chapter/ChapterRepositoryImpl.kt | Replace handler calls with Database + async await/subscribe APIs; adjust transaction usage. |
| data/src/main/java/tachiyomi/data/history/manga/MangaHistoryRepositoryImpl.kt | Replace handler calls with direct async DB query usage. |
| data/src/main/java/tachiyomi/data/entries/manga/MangaRepositoryImpl.kt | Replace handler calls with Database + async await/subscribe APIs; refactor transactional writes. |
| data/src/main/java/tachiyomi/data/entries/anime/AnimeRepositoryImpl.kt | Rely on insert returning value directly (remove standalone last-row-id query). |
| data/src/main/java/tachiyomi/data/custombutton/CustomButtonRepositoryImpl.kt | Change multi-update behavior to per-update calls. |
| data/src/main/java/tachiyomi/data/category/manga/MangaCategoryRepositoryImpl.kt | Migrate to async query APIs; change multi-update behavior to per-update calls. |
| data/src/main/java/tachiyomi/data/category/anime/AnimeCategoryRepositoryImpl.kt | Change multi-update behavior to per-update calls. |
| data/build.gradle.kts | Enable SQLDelight async generation for both databases. |
| build.gradle.kts | Add Kotlin Gradle plugin to buildscript; add Android KMP library plugin alias. |
| app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt | Minor constructor argument style change for SQLDelight driver creation. |
| app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt | Remove standalone last-row-id query usage on insert (insert now returns id). |
| app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaCategoriesRestorer.kt | Same insert/rowid behavior change for category creation. |
| app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/CustomButtonRestorer.kt | Same insert/rowid behavior change for custom button creation. |
| app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/AnimeRestorer.kt | Remove standalone last-row-id query usage on insert (insert now returns id). |
| app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/AnimeCategoriesRestorer.kt | Same insert/rowid behavior change for category creation. |
| app/src/main/java/eu/kanade/domain/entries/manga/interactor/SetExcludedScanlators.kt | Switch to direct Database transaction usage; currently mixes sync/async query APIs. |
| app/src/main/java/eu/kanade/domain/entries/manga/interactor/GetExcludedScanlators.kt | Migrate to async await/subscribe query APIs. |
| app/build.gradle.kts | Adjust source set resource dir DSL; add SQLDelight async dependency; remove some buildFeatures toggles. |
| .github/workflows/build_push.yml | Bump softprops/action-gh-release action pin/version. |
| .github/workflows/build_pull_request.yml | Run debug unit tests and upload corresponding report path. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+106
to
+107
| for (update in updates) { | ||
| updatePartial(update) |
Comment on lines
+44
to
+45
| for (update in updates) { | ||
| updatePartialCustomButton(update) |
Comment on lines
+75
to
+76
| for (update in updates) { | ||
| updatePartialAnimeCategory(update) |
Comment on lines
82
to
86
| override suspend fun updatePartialMangaCategories(updates: List<CategoryUpdate>) { | ||
| handler.await(inTransaction = true) { | ||
| for (update in updates) { | ||
| updatePartialBlocking(update) | ||
| } | ||
| updates.forEach { update -> | ||
| updatePartialMangaCategory(update) | ||
| } | ||
| } |
| package eu.kanade.domain.entries.manga.interactor | ||
|
|
||
| import tachiyomi.data.handlers.manga.MangaDatabaseHandler | ||
| import app.cash.sqldelight.async.coroutines.awaitAsList |
…1.0.0-rc14 (#3271)
Closes #3278 Fixes #3291
Co-authored-by: AntsyLich <[email protected]>
Co-authored-by: AntsyLich <[email protected]>
…xtension index format (#3349) # Conflicts: # app/src/main/AndroidManifest.xml # app/src/main/java/eu/kanade/domain/DomainModule.kt # app/src/main/java/eu/kanade/domain/extension/anime/interactor/TrustAnimeExtension.kt # app/src/main/java/eu/kanade/presentation/browse/manga/MangaExtensionsScreen.kt # app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt # app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/AnimeExtensionReposScreen.kt # app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/MangaExtensionReposScreenModel.kt # app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionReposDialogs.kt # app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionStoresContent.kt # app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionStoresScreen.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/AnimeExtensionRepoBackupCreator.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/AnimeExtensionRepoRestorer.kt # app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt # app/src/main/java/eu/kanade/tachiyomi/extension/manga/api/MangaExtensionApi.kt # app/src/main/java/eu/kanade/tachiyomi/extension/manga/model/MangaExtension.kt # app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/manga/extension/MangaExtensionsTab.kt # app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt # app/src/main/java/mihon/core/migration/migrations/TrustExtensionRepositoryMigration.kt # data/src/main/sqldelight/data/extension_store.sq # data/src/main/sqldelight/migrations/11.sqm # data/src/main/sqldelightanime/dataanime/extension_repos.sq # domain/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt # domain/src/main/java/mihon/domain/extensionrepo/manga/interactor/CreateMangaExtensionRepo.kt # domain/src/main/java/mihon/domain/extensionrepo/manga/interactor/GetMangaExtensionRepo.kt # domain/src/main/java/mihon/domain/extensionrepo/manga/interactor/UpdateMangaExtensionRepo.kt # domain/src/main/java/mihon/domain/extensionrepo/manga/repository/MangaExtensionRepoRepository.kt
…2222)" (aniyomiorg#2225) (cherry picked from commit 4de399d)
(cherry picked from commit 97a7deb) # Conflicts: # CHANGELOG.md
(cherry picked from commit d5dda0d)
… management modules
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.