* Make `img` and `parser` public to get rid of dead code warnings
* Remove redundant `no_mangle` and `allow(non_snake_case)` as `jni_fn`
already adds them
* Convert awaitSelectTime to use TimePickerDialog
* fixup! Convert awaitSelectTime to use TimePickerDialog
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Reapply "Migrate from Parcelize to kotlinx.serialization" (#2356)
This reverts commit c2e53cc8b9.
* Fix stale states captured by lambdas in ViewModels
- Don't generate compatibility bridges and `DefaultImpls` classes
- Remove when guards compiler option as it became stable
- Address deprecation of `kotlinOptions`
* Use `LazyLayoutCacheWindow` API for prefetching
With the old strategy, prefetched images may be evicted from cache.
* Make decoding process non-cancellable
* Prepare to make DialogState per Screen
* Remove some LocalDialogState usage
* Make DialogState Screen-Local
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* IntSliderPreference support display transforms
* Make timeoutSpeed pow of 2
* Fix conversion
* Fix conversion
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Move SpeedTracker to proper place
* SpeedTracker use Instant to avoid value class in generic
* Initial HAtHBlacklist
* H@H blacklist switch
* Allow to trim H@H blacklist
* Don't blacklist if that H@H returned twice
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Introduce connection timeout, Prepare to convert requestTimeout to speed based
* Fix step
* Refine
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Update Rust crate rxing to 0.7
* Fix build
Signed-off-by: Dude so hot <djohn@fbi.gov>
---------
Signed-off-by: Dude so hot <djohn@fbi.gov>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Further kill some java io usage
* Further optimize TagDatabase update logic
* Further optimize TagDatabase
* Move some part from okio to kxio
* Address Code Review
* Fix to not reinit with current if inited
* Convert readLegacySpiderInfo to use kxio
* Refine
* Refine
* Refine
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Polymorphic copy_region
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Polymorphic qr_code
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Polymorphic detect_border
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Implement luminance conversion
* Implement RGB_565 and RGBA_F16 support
* Revert "Workaround for high bit depth images"
This reverts commit 12f46e2e4e.
* Add ptr_as_image
Signed-off-by: Dude so hot <djohn@fbi.gov>
* ptr_as_image_mut
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Refine poly
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Refine
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Use fake channel
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Cleanup
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Naming
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Refine
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Cleanup
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Refine
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Use typealias
Signed-off-by: Dude so hot <djohn@fbi.gov>
* just unwarp
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Cleanup
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Just unwarp
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Address code review
Signed-off-by: Dude so hot <djohn@fbi.gov>
---------
Signed-off-by: Dude so hot <djohn@fbi.gov>
Co-authored-by: Dude so hot <djohn@fbi.gov>
Co-authored-by: FooIbar <118464521+FooIbar@users.noreply.github.com>
* Redesign Vote Status
* Revert "Redesign Vote Status"
This reverts commit 00295652f8eab9f91c1ef0ec1356e8eff838aaef.
* Redesign Vote Status
* Refine
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Support parsing GalleryTag vote status
* Append utf-8 emoji vote status
* Refresh tag list after voting
* Refine to use substringAfter
* Fix implicitNulls
* Refine to use withDraw vote
* Recompose first
* Optimize Snackbar to be cancellable for freq action
* Fix GalleryDetail recompose jump
* Refine VoteStatus display
* Support parse WeakStatus Active
* Append instead
* Add switch
* Refine naming
* Fix fillInfo
* Drop correctly
* Refine
* Refine rememberInVM impl with key
* Be type safe
* Refine
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Refine MergeInterceptor to not cancel current job when awaiter exists
* Refine
* Cleanup abstraction
* Cleanup abstraction
* Refine
* Refine
* Fix MutableSharedFlow skip f when no awaiters
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Drop unused field in GalleryDetail
* Let GalleryPreview url prefetchDistance just be pageSize
* Prefetch around GalleryPreview image
* Optimize
* Optimize
* Refine semantics
* Perform decode for +-20 prefetch
* Refine
* Refine
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Add rust parser test
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Update cargo lock
Signed-off-by: Dude so hot <djohn@fbi.gov>
---------
Signed-off-by: Dude so hot <djohn@fbi.gov>
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Add support for arrow key navigation
* Refactor key event handler to use Compose KeyEvent
Also removed volume key configurations.
* Fix focus requester
* Remember pageloader in ViewModel
* Fix hang on
* Refine
* Move ***InVM functions to ViewModelState
* Add rememberInVM overload takes no key
* Support asyncInVM & launchInVM with key
* Move UNCHECKED_CAST code
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Fallback to Okhttp instead
* Drop unused proguard
* Exclude okhttp3 public suffix
* Refine
* Refine
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Rolling number POC, convert page index
* Refine
* Improve
* Comments
* Refine Comments
* Bigger number is from top
* Prepare to make content moveable
* Make content index reversed
* Use moveableContentOf
* Increase interval
* Fix calculation
* Fix calculation again
* Extract
* Refine
* Use zero-sized placeholder
* Fix width
* Allow RollingNumber have fixed width
* Improve comments
* Make moveableContent initialized lazily
* Reverse direction
* Avoid movableContentOf if width fixed
* Use Arrangement.spacedBy
* Improve animation
* Refine
* Fix comment
* Fix padding
---------
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Fix deref_mut_direct_bytebuffer lifetime
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Framework
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Add Infra
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Implement
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Refine
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Impl
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Fixes
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Implement
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Update profile code
* Remove corrent but slow code that slow for 1000x
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Revert "Remove corrent but slow code that slow for 1000x"
This reverts commit 644d093ddc20f4a129ee304157767707337d149d.
* Fix speed
Signed-off-by: Dude so hot <djohn@fbi.gov>
* refine
Signed-off-by: Dude so hot <djohn@fbi.gov>
* refine
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Refine
Signed-off-by: Dude so hot <djohn@fbi.gov>
* cleanup type conversion
Signed-off-by: Dude so hot <djohn@fbi.gov>
* cleanup
Signed-off-by: Dude so hot <djohn@fbi.gov>
* refine
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Remove C cropborder impl
* impl nth to accel
Signed-off-by: Dude so hot <djohn@fbi.gov>
* F**K
Signed-off-by: Dude so hot <djohn@fbi.gov>
---------
Signed-off-by: Dude so hot <djohn@fbi.gov>
Co-authored-by: Dude so hot <djohn@fbi.gov>
* Add Rust implementation to detect QRCode from bitmap
* Add QRCodeInterceptor Framework
* Let image take hasQRCode info
* Keep ReaderPage index internal
* Move imageCache to use ReaderPage as key
* Make PageLoader size & pages internal
* Refine
* Kill entry if QRCode
* Rewrite request to respect index mapping
* Debug: enable by default
* Fix crash
* Fixup
* Fix identity
* Revert to lruCache to avoid crash
* Fixup
* Clippy check for android only
* Fixup
* Resolve clippy
* Switch
* Apply switch
* Restart pageloader restore pages
* Cleanup
* Cleanup
Signed-off-by: Dude so hot <djohn@fbi.gov>
* let it inference
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Don't detect border for ads
* Make coil interceptor runs in `Dispatchers.Default`
* Revert "Restart pageloader restore pages"
This reverts commit 8fd02fb7d9c677c119df72a767a6079f1899dc31.
* Revert drop page changes
* Use backGround color painter for ads
* Only check ads for tags contains extraneous ads
* Only check ads for head 5 images || tail 10 images
* Move strip ADs switch to AdvancedScreen
* Pick placeholder
* Show Placeholder
* Don't try to extract & decode
Signed-off-by: Dude so hot <djohn@fbi.gov>
* cleanup
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Naming
* Naming
* Naming
* Naming
* For ArchivePageLoader as well
* Hint
* Fix flicker
* Refine
* Naming
* QR -> Qr
* Naming
* QR -> Qr
* Naming
* Refine
* Revert
* Remove header check
* Allow show ads
* Adjust
* Refine
* Revert "Don't try to extract & decode"
This reverts commit f35ef46f6ffc81485cf0f4c646ed79e524c29d32.
Signed-off-by: Dude so hot <djohn@fbi.gov>
* be strict
Signed-off-by: Dude so hot <djohn@fbi.gov>
* Just Extract, don't decode
* Refine
* Refine placeholder
---------
Signed-off-by: Dude so hot <djohn@fbi.gov>
Co-authored-by: Dude so hot <djohn@fbi.gov>
Co-authored-by: FooIbar <118464521+FooIbar@users.noreply.github.com>
* Update Compose snapshot and remove workaround
* Sync SearchBarInputField with upstream
* Migrate to BTF2 text fields
* Fix search page range error text container color
* Update snapshot to fix a SieveCache crash
https://r.android.com/3199791
* Add shared element transitions
* Fixup CodeStyle
* Add a overload for `Modifier.sharedBounds`
* Add TransitionsVisibilityScope to hold multiple transition
* advance AnimatedVisibilityScope to TransitionsVisibilityScope
* composing use advance
* Correctly remember
* Convert to use `Set`
* share SharedContentState
* Refine
* Cleanup
* Cleanup
* Update snapshot
* Temporarily disable navigation transition
* Fix build
* Make `TransitionsVisibilityScope` a value class
* Naming
* Use `implicit` instead
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Add automated baseline profile generation
* Create benchmark build type
And remove the `enabledRules` argument as it will be injected by
baseline profile gradle plugin.
* Build libnettle with assembler code
* Add .gitattributes for shell script
* Patch nettle for CPU feature detection on Android
* Don't build libnettle at configuration time
* Fix build
* Refine
* Fix app language out of sync with system settings
* Manually update current language
Recomposition may not happen when current language is the same as system
default.
* Update DataStore to 1.1.1 for future `rememberInDataStore` impl
* Cleanup `rememberInVM` family
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Revert "Drop experimental touch slop factor setting"
This reverts commit d5d8a828ef.
Reason for revert: After some more testing I think sadly we still need it.
* Read touch slop factor as state
* Update to snapshot Compose
* Fix dep
* Revert "More workaround"
This reverts commit 9013778f58.
* Revert "Workaround for lazy layout lagging (#1042)"
This reverts commit b83e0fd0
* Revert "Workaround for comment list lagging at the bottom"
This reverts commit 45be957df5.
* Fix minOffset for blur radius calculation
Also use `onSizeChanged` instead of `onGloballyPositioned` as
measurement happens before placement.
* `FabLayoutValue` is `Stable`
* FabBuilder accepts a autoClose
* Refactor control flow to pattern matching expression and avoid exception
* Close fab on DatePicker selected
* Refine naming
* Introduce `SnapshotStateMap<K, V>.takeAndClear()`
* PutAll action use `autoClose = false`
* Handle exceptions
* Cleanup
* Handle potential e
* Refine to use autoClose
* FabLayout should use parent Screen CoroutineScope
* Use implicit context
* Introduce `runSwallowingWithUI`
* log exception as well
* Refine naming
* Cleanup with `runSwallowingWithUI`
* Refine naming again
* Fixup
* Remove redundant logcat
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Add Option to Select Downloads Grouping Mode
* hide Drag and Edit Button when Mode is Artist
* Revert "hide Drag and Edit Button when Mode is Artist"
some changes are not filtered when pushed
This reverts commit 319812e156f61c32250d908ed5ed22720ea0c6b7.
* hide Drag and Edit Button when Mode is Artist
* declared is typo
* use ComicInfo.penciller
* remove BaseGalleryInfo.artist
* Correct invalidate key
* reImport kotlin.math.roundToInt, it was incorrectly deleted
* use movableContentOf
* optimize imports
* use remember not rememberInVM
* Get DownloadInfo.artists from Database or `ComicInfo.xml`
* refactor
* unknown artist group
* redundant parameter
* reformat code
* SearchBar title and hint
* Translation
* Fix when initially loaded, the count of DownloadLabel is zero.
* lazy invalid
* use remember not rememberInVM
* refactor
* Fix LazyColumn not updated
* refactor
* Hide some Button in Artist Mode
* Revert
* Fix update labelList not updated UI
* Revert reFormat
* use trailing lambda
* Revert rememberUpdatedState
* Translate
* use buildMap
* Move ARTIST to DOWNLOAD_ARTIST
* Revert multi-line for chained Modifier
* Generate DownloadInfo.artistInfoList after writeComicInfo and restoreDownload
* Fixed crash after download gallery
* Use a composite key for DOWNLOAD_ARTISTS
* Make artists non-null
* Refactor
* Only update artist info when writing comic info
* Separate list for pending artist info
* Remove unused
* Put download artist when import database
* Use a composite key of GID and ARTIST
* Refactor
* Cache labelList
* named lambda parameters
* Refactor to avoid `mutex`
* follow up on `Make artists non-null`
* ArtistList order by ARTIST
* Lift EhTagDatabase check
* Translate artist in download title
* Refactor
* Refactor readMetadataFromLocal
Co-authored-by: FooIbar <118464521+FooIbar@users.noreply.github.com>
* Do not update the DB when the `artists` is empty
* Remove unused
---------
Co-authored-by: FooIbar <118464521+FooIbar@users.noreply.github.com>
Co-authored-by: GG Bond <whatever@tagkong.com>
* Cleanup CronetEngine with UploadDataProviders
* Remove WriteChannelContent as no user now
* Cleanup
* Cleanup
* Remove unnecessary invokeOnCancellation
* Refine
* Refine
* Format
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* CropBorderInterceptor
* TooLargeBitmapInterceptor
* Refine
* Take Foolbar's code
* May fail if the image is too large
* Fixup
* Fixup
* Refine
* Refine
* Swap CropBorderInterceptor & HardwareBitmapInterceptor
* Refine
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Official Navigation
* Update snapshot
* Move navigation to snapshot
* Drop dead switch
* Bisect
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Initial draft support export as cbz
* Hint user progress
* Hint user result
* Emit comicInfo as well
* Write ComicInfo if not exist
* Use perFilename
* Print stacktrace
* Fix
* Refine
* Revert "Refine"
This reverts commit 2b368180fde00c7a8cfd4e895f1f2d5c29c3cf9f.
* Refine
* Refine
* Fix
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Initial get crop rect for bitmap
* Adapt for RGBA8888
* Support crop with rect in SubsamplingScaleImageView
* Settings to control crop border
* BottomBar to control crop border
* Fix rgb detect
* Update border.c
* Update Image.kt
* Fix webtoon
* Don't copy if not isAtLeastQ
* Refine
* Avoid too large bitmap
* Fix grey calculation
* Revert "Avoid too large bitmap"
This reverts commit d58dbe12062586ffe4ce4b872aace48b23ad9fde.
* Use matrix to draw bitmap to bypass the size limit
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
Co-authored-by: FooIbar <118464521+FooIbar@users.noreply.github.com>
* Use DocumentsContractCompat
* Make UniFile.imageSource a extension
* Make UniFile.openFileDescriptor a extension
* Use appCtx
* Use appCtx
* Use appCtx
* Use appCtx
* Drop saveImageToLauncher
* Cleanup
* Use operator resolve
* Simplify
* Fix Toast
* Fixup
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Migrate bottom reader menu to Compose
* Use Compose to animate bottom reader menu bars
* Cleanup unused
* Refine
* Cleanup to use DropdownMenu
* Cleanup unused
* Refine BottomReaderBar layout
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Follow API rate limit to avoid IP ban
* Delay for bulk favorite adding to prevent flooding
* Revert "Delay for bulk favorite adding to prevent flooding"
This reverts commit 0c175453101aab2d6d200a661259906291ceac36.
* Make requests in parallel
* Initial CronetEngine without UploadDataProvider support
* Support ByteArrayContent
* Cleanup
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Migration
* Migration
* Migration
* Migration
* Make EhCookieStore a CookiesStorage
* Drop CookieDB migration
* Drop one Okhttp cookie usage
* Drop one Okhttp cookie usage
* Remove typealias
* Move EhTagDatabase to use ktor
* Make cronet just use Dispatchers.IO
* Make all okhttpClient internally used
* Cleanup
* Refine
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Ktor 3.0.0-beta-1
* Drop chunker since we no more se okhttp
* Move getGalleryDetail to ktor
* Migration
* Migration
* Migration
* Migration
* Migration
* Migration
* Migration
* Migration
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Fix read page
* Refine FabLayout
* Let Fablayout have consistent animation state, walk consistently
* Let Fablayout collapse when secondaryFab updated
* Move animation delay out of FabLayout, should not handle that within FabLayout
* Refine predictive back
* Refine predictive back
* Introduce waitCollapse
* Refine
* Simplify
* Simplify
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Workaround Infinity recompose
* Observe all Snapshot apply that may trigger recompose when debug mode
* Continue to fix things up
* Fix things up
* Fix things up
---------
Co-authored-by: GG Bond <whatever@tagkong.com>
* Initial Add RequestBody support for cronetRequest
* Convert modifyFavorites to use cronet
* Code refactor
* Avoid some unnecessary copy
* Suppress NewApi for all managed usage
---------
Co-authored-by: Lokesh Gidra <lokeshgidra@google.com>
* Fix wrong SideSheetDialog usage
* Do not assume fragmentView first composition earlier than drawerView's
Use MainActivity composition instead
---------
Co-authored-by: Lokesh Gidra <lokeshgidra@google.com>
* Revert "Fix local favorites scroll state loss"
This reverts commit c4be269f
* Enable placeholders as workaround
* Remove TODO
* Bump minimum fast scroller handler height to 48 dp
Make it consistent with `VerticalFastScroller`
* Initial Stub Compose GalleryCommentsScreen
* Initial Fab and edittext
* Refine comment edittext
* Support load more comments
* Animated loading state
* Refine, cleanup migrated things
* Initial comment dialog
* Refine
* Introduce buildAction dsl
* Impl voteComment
* Refine and cleanup migrated things
* Impl check vote status
* Refine
* Refine
* Padding a ime
* Support send commnet
* Cleanup all the code
* Let edittext and sendButton padding a navbar
* Let LazyColumn padding a ime
* Let LazyColumn contentPadding a edittext and fab
* Handle unresolved span with onCardClick
* Modify how LinkifyTextView works
* Adjust padding
* Adjust comment textstyle
---------
Co-authored-by: Lokesh Gidra <lokeshgidra@google.com>
* Revert "Fix progress not showing after clicking error tip"
This reverts commit bc914566dd.
* Revert "Try to fix recyclerview disappearing after refresh (#61)"
This reverts commit f9a3c3d266.
* Revert "Scroll to top after refreshing"
This reverts commit b0896ea465.
* Revert "Fix reader bug on certain orientation settings"
This reverts commit 6e59583dea.
* Revert "Skip `buildProvider` if the activity will restart"
This reverts commit a880f801fb.
* Preserve gallery provider in view model
`updateInternal` and `issueUpdateInMemoryData` will try to create tag
database directory at the same time on first launch and one of them will
fail, causing app crash
* Drop AboveSnackerLayout
* Migrate navigation drawer to compose
* Suspend until logged in before loading
* Use AndroidViewBinding
* fixup! Migrate navigation drawer to compose
* Cleanup AboveSnackView usage
* Cleanup res
* Cleanup dependencies
* Use product flavors to provide marshmallow support
Fix crashing when opening archives
* Fix artifacts upload
* Change artifact names
* Fix app updater
* Revert "Drop webp icon since minSdk is 28"
This reverts commit 9f77a4ce0a.
* Upgrade AGP and use K2 lint
* Enable core library desugaring and minSdk 23
* Fix some new API usage
* Add fallback image decoder for API < 28
Thanks for your contribution on Ehviewer-Overhauled Project!
Thanks for your contribution on EhViewer Project!
Please finish verify steps which list in the end first before create bug report
- type:textarea
@@ -64,7 +64,7 @@ body:
description:您可以通过设置-高级-导出日志来获得日志文件 / You can get logs file in Settings - Advanced - Dump logcat
placeholder:06-1517:44:53.7042338223382E ...
validations:
required:false
required:true
- type:textarea
id:more
@@ -79,6 +79,15 @@ body:
validations:
required:false
- type:input
id:site
attributes:
label:浏览站点 / Browsing site
description:E-Hentai / ExHentai
placeholder:E-Hentai
validations:
required:true
- type:input
id:version
attributes:
@@ -132,17 +141,11 @@ body:
请确认您已经遵守所有必选项
Please ensure you have obtained all needed options
options:
- label:如果您有足够的时间和能力,并愿意为此提交 PR ,请勾上此复选框 / Pull request is welcome. Check this if you want to start a pull request
required:false
- label:您已仔细查看并知情 [Q&A](https://github.com/Ehviewer-Overhauled/Ehviewer/issues/61) 中的内容 / You have checked [Q&A](https://github.com/Ehviewer-Overhauled/Ehviewer/issues/61) carefully
required:true
- label:您已搜索过 [Issue Tracker](https://github.com/Ehviewer-Overhauled/Ehviewer/issues),没有找到类似内容 / I have searched on [Issue Tracker](https://github.com/Ehviewer-Overhauled/Ehviewer/issues), No duplicate or related open issue has been found
- label:您已搜索过 [Issue Tracker](https://github.com/FooIbar/EhViewer/issues),没有找到类似内容 / I have searched on [Issue Tracker](https://github.com/FooIbar/EhViewer/issues), No duplicate or related open issue has been found
required:true
- label:您确保这个 Issue 只提及一个问题。如果您有多个问题报告,烦请发起多个 Issue / Ensure there is only one bug report in this issue. Please make mutiply issue for mutiply bugs
required:true
- label:您确保已使用最新 CI 版本测试,并且该问题在最新 CI 版本中并未解决 / This bug have not solved in latest CI version
- label:您确保已使用最新 [CI 版本](https://github.com/FooIbar/EhViewer/actions)测试,并且该问题在最新 CI 版本中并未解决 / This bug have not solved in latest [CI version](https://github.com/FooIbar/EhViewer/actions)
Thanks for your contribution on Ehviewer-Overhauled Project!
Please finish verify steps which list in the end first before suggest an idea
- type:textarea
id:request
attributes:
label:需求 / Requirement
description:|
在此处描述您的需求。这通常会是一个您想要的功能
Ddescribe what you need here.
placeholder:|
我需要 XXX 功能 ...
I want ABC feature ...
validations:
required:true
- type:textarea
id:impl
attributes:
label:建议实现 / Suggested implements
description:|
在此处表述您建议的实现方式。如有可能,UI 类功能请求还请尽量附上图示
Describe your suggested implements here, It's recommend to add a photo if you are making a UI feature request.
placeholder:|
建议在 XX 处添加 XX ...
I recommend add ABC feature to DEF...
图片(如果有)/ Photos (if exists)
validations:
required:true
- type:textarea
id:more
attributes:
label:备注 / Addition details
description:|
在此处写下其他您想说的内容
Describe addition details here
placeholder:|
其他有用的信息与附件
Additional details and attachments
validations:
required:false
- type:input
id:version
attributes:
label:EhViewer 版本号 / EhViewer version code
description:您可以在设置 - 关于处找到版本号 / You can get version code in Settings - About
placeholder:1.6.9.13
validations:
required:true
- type:input
id:ci
attributes:
label:EhViewer CI 版本 / EhViewer CI Version
description:位于设置 - 关于中的版本号后 / Next to the version code in Settings - About
placeholder:26f05a0
validations:
required:true
- type:checkboxes
id:check
attributes:
label:自查步骤 / Verify steps
description:|
请确认您已经遵守所有必选项
Please ensure you have obtained all needed options
options:
- label:如果您有足够的时间和能力,并愿意为此提交 PR ,请勾上此复选框 / Pull request is welcome. Check this if you want to start a pull request
required:false
- label:您已仔细查看并知情 [Q&A](https://github.com/Ehviewer-Overhauled/Ehviewer/issues/61) 中的内容 / You have checked [Q&A](https://github.com/Ehviewer-Overhauled/Ehviewer/issues/61) carefully
required:true
- label:您已搜索过 [Issue Tracker](https://github.com/Ehviewer-Overhauled/Ehviewer/issues),没有找到类似内容 / I have searched on [Issue Tracker](https://github.com/Ehviewer-Overhauled/Ehviewer/issues), No duplicate or related open issue has been found
required:true
- label:您确保这个 Issue 只提及一个功能。如果您有多个功能请求,烦请发起多个 Issue / Ensure there is only one feature request in this issue. Please make mutiply issue for mutiply feature request
required:true
- label:您确保已使用最新 CI 版本测试,并且该功能在最新 CI 版本中并未按照预期实现 / This feature don't implement correctly in latest CI version
EhViewer fork dedicated to lightweight and high-performance
A modern EhViewer fork dedicated to high-performance
with [Material Design 3](https://m3.material.io/)
and [Dynamic Color](https://m3.material.io/styles/color/dynamic-color/overview) Support
# Download
<a href="https://github.com/Ehviewer-Overhauled/Ehviewer/releases"><img alt="Get it on GitHub" src="https://github.com/Ehviewer-Overhauled/Art/blob/master/get-it-on-github.svg" width="200px"/></a> <a href="https://github.com/Ehviewer-Overhauled/fdroid-repo"><img alt="Get it on F-Droid" src="https://github.com/Ehviewer-Overhauled/Art/blob/master/get-it-on-fdroid.svg" width="200px"/></a>
EhViewer is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`NAME` TEXT, `VALUE` TEXT, `EXPIRES_AT` INTEGER NOT NULL, `DOMAIN` TEXT, `PATH` TEXT, `SECURE` INTEGER NOT NULL, `HTTP_ONLY` INTEGER NOT NULL, `PERSISTENT` INTEGER NOT NULL, `HOST_ONLY` INTEGER NOT NULL, `_id` INTEGER NOT NULL, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"name",
"columnName":"NAME",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"value",
"columnName":"VALUE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"expiresAt",
"columnName":"EXPIRES_AT",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"domain",
"columnName":"DOMAIN",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"path",
"columnName":"PATH",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"secure",
"columnName":"SECURE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"httpOnly",
"columnName":"HTTP_ONLY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"persistent",
"columnName":"PERSISTENT",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"hostOnly",
"columnName":"HOST_ONLY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"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, 'c801ee62729ba20a203b150211234d5c')"
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`NAME` TEXT NOT NULL, `VALUE` TEXT NOT NULL, `EXPIRES_AT` INTEGER NOT NULL, `DOMAIN` TEXT NOT NULL, `PATH` TEXT NOT NULL, `SECURE` INTEGER NOT NULL, `HTTP_ONLY` INTEGER NOT NULL, `PERSISTENT` INTEGER NOT NULL, `HOST_ONLY` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"name",
"columnName":"NAME",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"value",
"columnName":"VALUE",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"expiresAt",
"columnName":"EXPIRES_AT",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"domain",
"columnName":"DOMAIN",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"path",
"columnName":"PATH",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"secure",
"columnName":"SECURE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"httpOnly",
"columnName":"HTTP_ONLY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"persistent",
"columnName":"PERSISTENT",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"hostOnly",
"columnName":"HOST_ONLY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"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, '1b80cd29939b0f43934721f1289ba94d')"
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TOKEN` TEXT, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, `FAVORITE_SLOT` INTEGER NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"token",
"columnName":"TOKEN",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"thumbKey",
"columnName":"THUMB",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"posted",
"columnName":"POSTED",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"uploader",
"columnName":"UPLOADER",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"rating",
"columnName":"RATING",
"affinity":"REAL",
"notNull":true
},
{
"fieldPath":"simpleLanguage",
"columnName":"SIMPLE_LANGUAGE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"favoriteSlot",
"columnName":"FAVORITE_SLOT",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"DOWNLOAD_LABELS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `POSITION` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[
{
"name":"index_DOWNLOAD_LABELS_LABEL",
"unique":true,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE UNIQUE INDEX IF NOT EXISTS `index_DOWNLOAD_LABELS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[]
},
{
"tableName":"DOWNLOADS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`LABEL`) REFERENCES `DOWNLOAD_LABELS`(`LABEL`) ON UPDATE CASCADE ON DELETE SET NULL )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"state",
"columnName":"STATE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"legacy",
"columnName":"LEGACY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[
{
"name":"index_DOWNLOADS_LABEL",
"unique":false,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE INDEX IF NOT EXISTS `index_DOWNLOADS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
},
{
"table":"DOWNLOAD_LABELS",
"onDelete":"SET NULL",
"onUpdate":"CASCADE",
"columns":[
"LABEL"
],
"referencedColumns":[
"LABEL"
]
}
]
},
{
"tableName":"DOWNLOAD_DIRNAME",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `DIRNAME` TEXT NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"dirname",
"columnName":"DIRNAME",
"affinity":"TEXT",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"FILTER",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`MODE` INTEGER NOT NULL, `TEXT` TEXT NOT NULL, `ENABLE` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"text",
"columnName":"TEXT",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"enable",
"columnName":"ENABLE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"HISTORY",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"LOCAL_FAVORITES",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"PROGRESS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `PAGE` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"page",
"columnName":"PAGE",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"CASCADE",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"QUICK_SEARCH",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
},
{
"fieldPath":"name",
"columnName":"NAME",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"keyword",
"columnName":"KEYWORD",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"advanceSearch",
"columnName":"ADVANCE_SEARCH",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"minRating",
"columnName":"MIN_RATING",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageFrom",
"columnName":"PAGE_FROM",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageTo",
"columnName":"PAGE_TO",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"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, 'd6375317a9298b7feae5925a23272bb9')"
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TOKEN` TEXT NOT NULL, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, `FAVORITE_SLOT` INTEGER NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"token",
"columnName":"TOKEN",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"thumbKey",
"columnName":"THUMB",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"posted",
"columnName":"POSTED",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"uploader",
"columnName":"UPLOADER",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"rating",
"columnName":"RATING",
"affinity":"REAL",
"notNull":true
},
{
"fieldPath":"simpleLanguage",
"columnName":"SIMPLE_LANGUAGE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"favoriteSlot",
"columnName":"FAVORITE_SLOT",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"DOWNLOAD_LABELS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `POSITION` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[
{
"name":"index_DOWNLOAD_LABELS_LABEL",
"unique":true,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE UNIQUE INDEX IF NOT EXISTS `index_DOWNLOAD_LABELS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[]
},
{
"tableName":"DOWNLOADS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`LABEL`) REFERENCES `DOWNLOAD_LABELS`(`LABEL`) ON UPDATE CASCADE ON DELETE SET NULL )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"state",
"columnName":"STATE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"legacy",
"columnName":"LEGACY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[
{
"name":"index_DOWNLOADS_LABEL",
"unique":false,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE INDEX IF NOT EXISTS `index_DOWNLOADS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
},
{
"table":"DOWNLOAD_LABELS",
"onDelete":"SET NULL",
"onUpdate":"CASCADE",
"columns":[
"LABEL"
],
"referencedColumns":[
"LABEL"
]
}
]
},
{
"tableName":"DOWNLOAD_DIRNAME",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `DIRNAME` TEXT NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"dirname",
"columnName":"DIRNAME",
"affinity":"TEXT",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"FILTER",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`MODE` INTEGER NOT NULL, `TEXT` TEXT NOT NULL, `ENABLE` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"text",
"columnName":"TEXT",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"enable",
"columnName":"ENABLE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"HISTORY",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"LOCAL_FAVORITES",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"PROGRESS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `PAGE` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"page",
"columnName":"PAGE",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"CASCADE",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"QUICK_SEARCH",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
},
{
"fieldPath":"name",
"columnName":"NAME",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"keyword",
"columnName":"KEYWORD",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"advanceSearch",
"columnName":"ADVANCE_SEARCH",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"minRating",
"columnName":"MIN_RATING",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageFrom",
"columnName":"PAGE_FROM",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageTo",
"columnName":"PAGE_TO",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"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, 'bc90acf4ffb4e7cce9a16cd5a0f662f3')"
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TOKEN` TEXT NOT NULL, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_LANGUAGE` TEXT, `FAVORITE_SLOT` INTEGER NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"token",
"columnName":"TOKEN",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"thumbKey",
"columnName":"THUMB",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"posted",
"columnName":"POSTED",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"uploader",
"columnName":"UPLOADER",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"rating",
"columnName":"RATING",
"affinity":"REAL",
"notNull":true
},
{
"fieldPath":"simpleLanguage",
"columnName":"SIMPLE_LANGUAGE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"favoriteSlot",
"columnName":"FAVORITE_SLOT",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"DOWNLOAD_LABELS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `POSITION` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[
{
"name":"index_DOWNLOAD_LABELS_LABEL",
"unique":true,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE UNIQUE INDEX IF NOT EXISTS `index_DOWNLOAD_LABELS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[]
},
{
"tableName":"DOWNLOADS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`LABEL`) REFERENCES `DOWNLOAD_LABELS`(`LABEL`) ON UPDATE CASCADE ON DELETE SET NULL )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"state",
"columnName":"STATE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"legacy",
"columnName":"LEGACY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[
{
"name":"index_DOWNLOADS_LABEL",
"unique":false,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE INDEX IF NOT EXISTS `index_DOWNLOADS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
},
{
"table":"DOWNLOAD_LABELS",
"onDelete":"SET NULL",
"onUpdate":"CASCADE",
"columns":[
"LABEL"
],
"referencedColumns":[
"LABEL"
]
}
]
},
{
"tableName":"DOWNLOAD_DIRNAME",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `DIRNAME` TEXT NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"dirname",
"columnName":"DIRNAME",
"affinity":"TEXT",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"FILTER",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`MODE` INTEGER NOT NULL, `TEXT` TEXT NOT NULL, `ENABLE` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"text",
"columnName":"TEXT",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"enable",
"columnName":"ENABLE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"HISTORY",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"LOCAL_FAVORITES",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"PROGRESS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `PAGE` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"page",
"columnName":"PAGE",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"CASCADE",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"QUICK_SEARCH",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
},
{
"fieldPath":"name",
"columnName":"NAME",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"keyword",
"columnName":"KEYWORD",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"advanceSearch",
"columnName":"ADVANCE_SEARCH",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"minRating",
"columnName":"MIN_RATING",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageFrom",
"columnName":"PAGE_FROM",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageTo",
"columnName":"PAGE_TO",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"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, 'edd2f8e628072889f7702b50eb2c44a1')"
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TOKEN` TEXT NOT NULL, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `PAGES` INTEGER NOT NULL DEFAULT 0, `SIMPLE_LANGUAGE` TEXT, `FAVORITE_SLOT` INTEGER NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"token",
"columnName":"TOKEN",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"thumbKey",
"columnName":"THUMB",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"posted",
"columnName":"POSTED",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"uploader",
"columnName":"UPLOADER",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"rating",
"columnName":"RATING",
"affinity":"REAL",
"notNull":true
},
{
"fieldPath":"pages",
"columnName":"PAGES",
"affinity":"INTEGER",
"notNull":true,
"defaultValue":"0"
},
{
"fieldPath":"simpleLanguage",
"columnName":"SIMPLE_LANGUAGE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"favoriteSlot",
"columnName":"FAVORITE_SLOT",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"DOWNLOAD_LABELS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `POSITION` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[
{
"name":"index_DOWNLOAD_LABELS_LABEL",
"unique":true,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE UNIQUE INDEX IF NOT EXISTS `index_DOWNLOAD_LABELS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[]
},
{
"tableName":"DOWNLOADS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`LABEL`) REFERENCES `DOWNLOAD_LABELS`(`LABEL`) ON UPDATE CASCADE ON DELETE SET NULL )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"state",
"columnName":"STATE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"legacy",
"columnName":"LEGACY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[
{
"name":"index_DOWNLOADS_LABEL",
"unique":false,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE INDEX IF NOT EXISTS `index_DOWNLOADS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
},
{
"table":"DOWNLOAD_LABELS",
"onDelete":"SET NULL",
"onUpdate":"CASCADE",
"columns":[
"LABEL"
],
"referencedColumns":[
"LABEL"
]
}
]
},
{
"tableName":"DOWNLOAD_DIRNAME",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `DIRNAME` TEXT NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"dirname",
"columnName":"DIRNAME",
"affinity":"TEXT",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"FILTER",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`MODE` INTEGER NOT NULL, `TEXT` TEXT NOT NULL, `ENABLE` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"text",
"columnName":"TEXT",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"enable",
"columnName":"ENABLE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"HISTORY",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"LOCAL_FAVORITES",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"PROGRESS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `PAGE` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"page",
"columnName":"PAGE",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"CASCADE",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"QUICK_SEARCH",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
},
{
"fieldPath":"name",
"columnName":"NAME",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"keyword",
"columnName":"KEYWORD",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"advanceSearch",
"columnName":"ADVANCE_SEARCH",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"minRating",
"columnName":"MIN_RATING",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageFrom",
"columnName":"PAGE_FROM",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageTo",
"columnName":"PAGE_TO",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"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, 'a8dd0226b286cc57a8c99ba7ad416730')"
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TOKEN` TEXT NOT NULL, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `PAGES` INTEGER NOT NULL DEFAULT 0, `SIMPLE_LANGUAGE` TEXT, `FAVORITE_SLOT` INTEGER NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"token",
"columnName":"TOKEN",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"thumbKey",
"columnName":"THUMB",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"posted",
"columnName":"POSTED",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"uploader",
"columnName":"UPLOADER",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"rating",
"columnName":"RATING",
"affinity":"REAL",
"notNull":true
},
{
"fieldPath":"pages",
"columnName":"PAGES",
"affinity":"INTEGER",
"notNull":true,
"defaultValue":"0"
},
{
"fieldPath":"simpleLanguage",
"columnName":"SIMPLE_LANGUAGE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"favoriteSlot",
"columnName":"FAVORITE_SLOT",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"DOWNLOAD_LABELS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `POSITION` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[
{
"name":"index_DOWNLOAD_LABELS_LABEL",
"unique":true,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE UNIQUE INDEX IF NOT EXISTS `index_DOWNLOAD_LABELS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[]
},
{
"tableName":"DOWNLOADS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`LABEL`) REFERENCES `DOWNLOAD_LABELS`(`LABEL`) ON UPDATE CASCADE ON DELETE SET NULL )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"state",
"columnName":"STATE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"legacy",
"columnName":"LEGACY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[
{
"name":"index_DOWNLOADS_LABEL",
"unique":false,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE INDEX IF NOT EXISTS `index_DOWNLOADS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
},
{
"table":"DOWNLOAD_LABELS",
"onDelete":"SET NULL",
"onUpdate":"CASCADE",
"columns":[
"LABEL"
],
"referencedColumns":[
"LABEL"
]
}
]
},
{
"tableName":"DOWNLOAD_DIRNAME",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `DIRNAME` TEXT NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"dirname",
"columnName":"DIRNAME",
"affinity":"TEXT",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"FILTER",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`MODE` INTEGER NOT NULL, `TEXT` TEXT NOT NULL, `ENABLE` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"text",
"columnName":"TEXT",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"enable",
"columnName":"ENABLE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"HISTORY",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"LOCAL_FAVORITES",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"PROGRESS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `PAGE` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"page",
"columnName":"PAGE",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"CASCADE",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"QUICK_SEARCH",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
},
{
"fieldPath":"name",
"columnName":"NAME",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"keyword",
"columnName":"KEYWORD",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"advanceSearch",
"columnName":"ADVANCE_SEARCH",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"minRating",
"columnName":"MIN_RATING",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageFrom",
"columnName":"PAGE_FROM",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageTo",
"columnName":"PAGE_TO",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"ftsVersion":"FTS4",
"ftsOptions":{
"tokenizer":"simple",
"tokenizerArgs":[],
"contentTable":"GALLERIES",
"languageIdColumnName":"",
"matchInfo":"FTS4",
"notIndexedColumns":[],
"prefixSizes":[],
"preferredOrder":"ASC"
},
"contentSyncTriggers":[
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GalleryFts_BEFORE_UPDATE BEFORE UPDATE ON `GALLERIES` BEGIN DELETE FROM `GalleryFts` WHERE `docid`=OLD.`rowid`; END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GalleryFts_BEFORE_DELETE BEFORE DELETE ON `GALLERIES` BEGIN DELETE FROM `GalleryFts` WHERE `docid`=OLD.`rowid`; END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GalleryFts_AFTER_UPDATE AFTER UPDATE ON `GALLERIES` BEGIN INSERT INTO `GalleryFts`(`docid`, `TITLE`, `TITLE_JPN`) VALUES (NEW.`rowid`, NEW.`TITLE`, NEW.`TITLE_JPN`); END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GalleryFts_AFTER_INSERT AFTER INSERT ON `GALLERIES` BEGIN INSERT INTO `GalleryFts`(`docid`, `TITLE`, `TITLE_JPN`) VALUES (NEW.`rowid`, NEW.`TITLE`, NEW.`TITLE_JPN`); END"
],
"tableName":"GalleryFts",
"createSql":"CREATE VIRTUAL TABLE IF NOT EXISTS `${TABLE_NAME}` USING FTS4(`TITLE` TEXT NOT NULL, `TITLE_JPN` TEXT NOT NULL, content=`GALLERIES`)",
"fields":[
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[]
},
"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, '6a9926f6722f8fc6f9c4426b31260e33')"
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TOKEN` TEXT NOT NULL, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_TAGS` TEXT, `PAGES` INTEGER NOT NULL DEFAULT 0, `SIMPLE_LANGUAGE` TEXT, `FAVORITE_SLOT` INTEGER NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"token",
"columnName":"TOKEN",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"thumbKey",
"columnName":"THUMB",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"posted",
"columnName":"POSTED",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"uploader",
"columnName":"UPLOADER",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"rating",
"columnName":"RATING",
"affinity":"REAL",
"notNull":true
},
{
"fieldPath":"simpleTags",
"columnName":"SIMPLE_TAGS",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"pages",
"columnName":"PAGES",
"affinity":"INTEGER",
"notNull":true,
"defaultValue":"0"
},
{
"fieldPath":"simpleLanguage",
"columnName":"SIMPLE_LANGUAGE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"favoriteSlot",
"columnName":"FAVORITE_SLOT",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"DOWNLOAD_LABELS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `POSITION` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[
{
"name":"index_DOWNLOAD_LABELS_LABEL",
"unique":true,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE UNIQUE INDEX IF NOT EXISTS `index_DOWNLOAD_LABELS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[]
},
{
"tableName":"DOWNLOADS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`LABEL`) REFERENCES `DOWNLOAD_LABELS`(`LABEL`) ON UPDATE CASCADE ON DELETE SET NULL )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"state",
"columnName":"STATE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"legacy",
"columnName":"LEGACY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[
{
"name":"index_DOWNLOADS_LABEL",
"unique":false,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE INDEX IF NOT EXISTS `index_DOWNLOADS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
},
{
"table":"DOWNLOAD_LABELS",
"onDelete":"SET NULL",
"onUpdate":"CASCADE",
"columns":[
"LABEL"
],
"referencedColumns":[
"LABEL"
]
}
]
},
{
"tableName":"DOWNLOAD_DIRNAME",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `DIRNAME` TEXT NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"dirname",
"columnName":"DIRNAME",
"affinity":"TEXT",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"FILTER",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`MODE` INTEGER NOT NULL, `TEXT` TEXT NOT NULL, `ENABLE` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"text",
"columnName":"TEXT",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"enable",
"columnName":"ENABLE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"HISTORY",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"LOCAL_FAVORITES",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"PROGRESS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `PAGE` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"page",
"columnName":"PAGE",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"CASCADE",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"QUICK_SEARCH",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
},
{
"fieldPath":"name",
"columnName":"NAME",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"keyword",
"columnName":"KEYWORD",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"advanceSearch",
"columnName":"ADVANCE_SEARCH",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"minRating",
"columnName":"MIN_RATING",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageFrom",
"columnName":"PAGE_FROM",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageTo",
"columnName":"PAGE_TO",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"ftsVersion":"FTS4",
"ftsOptions":{
"tokenizer":"simple",
"tokenizerArgs":[],
"contentTable":"GALLERIES",
"languageIdColumnName":"",
"matchInfo":"FTS4",
"notIndexedColumns":[],
"prefixSizes":[],
"preferredOrder":"ASC"
},
"contentSyncTriggers":[
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GALLERIES_FTS_BEFORE_UPDATE BEFORE UPDATE ON `GALLERIES` BEGIN DELETE FROM `GALLERIES_FTS` WHERE `docid`=OLD.`rowid`; END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GALLERIES_FTS_BEFORE_DELETE BEFORE DELETE ON `GALLERIES` BEGIN DELETE FROM `GALLERIES_FTS` WHERE `docid`=OLD.`rowid`; END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GALLERIES_FTS_AFTER_UPDATE AFTER UPDATE ON `GALLERIES` BEGIN INSERT INTO `GALLERIES_FTS`(`docid`, `TITLE`, `TITLE_JPN`, `SIMPLE_TAGS`) VALUES (NEW.`rowid`, NEW.`TITLE`, NEW.`TITLE_JPN`, NEW.`SIMPLE_TAGS`); END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GALLERIES_FTS_AFTER_INSERT AFTER INSERT ON `GALLERIES` BEGIN INSERT INTO `GALLERIES_FTS`(`docid`, `TITLE`, `TITLE_JPN`, `SIMPLE_TAGS`) VALUES (NEW.`rowid`, NEW.`TITLE`, NEW.`TITLE_JPN`, NEW.`SIMPLE_TAGS`); END"
],
"tableName":"GALLERIES_FTS",
"createSql":"CREATE VIRTUAL TABLE IF NOT EXISTS `${TABLE_NAME}` USING FTS4(`TITLE` TEXT NOT NULL, `TITLE_JPN` TEXT NOT NULL, `SIMPLE_TAGS` TEXT, content=`GALLERIES`)",
"fields":[
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"simpleTags",
"columnName":"SIMPLE_TAGS",
"affinity":"TEXT",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[]
},
"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, 'f61ae3beef3739c0de7db945d2c9a4a4')"
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TOKEN` TEXT NOT NULL, `TITLE` TEXT, `TITLE_JPN` TEXT, `THUMB` TEXT, `CATEGORY` INTEGER NOT NULL, `POSTED` TEXT, `UPLOADER` TEXT, `RATING` REAL NOT NULL, `SIMPLE_TAGS` TEXT, `PAGES` INTEGER NOT NULL DEFAULT 0, `SIMPLE_LANGUAGE` TEXT, `FAVORITE_SLOT` INTEGER NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"token",
"columnName":"TOKEN",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"thumbKey",
"columnName":"THUMB",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"posted",
"columnName":"POSTED",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"uploader",
"columnName":"UPLOADER",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"rating",
"columnName":"RATING",
"affinity":"REAL",
"notNull":true
},
{
"fieldPath":"simpleTags",
"columnName":"SIMPLE_TAGS",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"pages",
"columnName":"PAGES",
"affinity":"INTEGER",
"notNull":true,
"defaultValue":"0"
},
{
"fieldPath":"simpleLanguage",
"columnName":"SIMPLE_LANGUAGE",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"favoriteSlot",
"columnName":"FAVORITE_SLOT",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"DOWNLOAD_LABELS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`LABEL` TEXT NOT NULL, `POSITION` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[
{
"name":"index_DOWNLOAD_LABELS_LABEL",
"unique":true,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE UNIQUE INDEX IF NOT EXISTS `index_DOWNLOAD_LABELS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[]
},
{
"tableName":"DOWNLOADS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `STATE` INTEGER NOT NULL, `LEGACY` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, `LABEL` TEXT, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION , FOREIGN KEY(`LABEL`) REFERENCES `DOWNLOAD_LABELS`(`LABEL`) ON UPDATE CASCADE ON DELETE SET NULL )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"state",
"columnName":"STATE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"legacy",
"columnName":"LEGACY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"label",
"columnName":"LABEL",
"affinity":"TEXT",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[
{
"name":"index_DOWNLOADS_LABEL",
"unique":false,
"columnNames":[
"LABEL"
],
"orders":[],
"createSql":"CREATE INDEX IF NOT EXISTS `index_DOWNLOADS_LABEL` ON `${TABLE_NAME}` (`LABEL`)"
}
],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
},
{
"table":"DOWNLOAD_LABELS",
"onDelete":"SET NULL",
"onUpdate":"CASCADE",
"columns":[
"LABEL"
],
"referencedColumns":[
"LABEL"
]
}
]
},
{
"tableName":"DOWNLOAD_DIRNAME",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `DIRNAME` TEXT NOT NULL, PRIMARY KEY(`GID`))",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"dirname",
"columnName":"DIRNAME",
"affinity":"TEXT",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"DOWNLOAD_ARTISTS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `ARTIST` TEXT NOT NULL, PRIMARY KEY(`GID`, `ARTIST`), FOREIGN KEY(`GID`) REFERENCES `DOWNLOADS`(`GID`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"artist",
"columnName":"ARTIST",
"affinity":"TEXT",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID",
"ARTIST"
]
},
"indices":[],
"foreignKeys":[
{
"table":"DOWNLOADS",
"onDelete":"CASCADE",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"FILTER",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`MODE` INTEGER NOT NULL, `TEXT` TEXT NOT NULL, `ENABLE` INTEGER NOT NULL, `_id` INTEGER, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"text",
"columnName":"TEXT",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"enable",
"columnName":"ENABLE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"tableName":"HISTORY",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"LOCAL_FAVORITES",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `TIME` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"time",
"columnName":"TIME",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"NO ACTION",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"PROGRESS",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`GID` INTEGER NOT NULL, `PAGE` INTEGER NOT NULL, PRIMARY KEY(`GID`), FOREIGN KEY(`GID`) REFERENCES `GALLERIES`(`GID`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields":[
{
"fieldPath":"gid",
"columnName":"GID",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"page",
"columnName":"PAGE",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"GID"
]
},
"indices":[],
"foreignKeys":[
{
"table":"GALLERIES",
"onDelete":"CASCADE",
"onUpdate":"NO ACTION",
"columns":[
"GID"
],
"referencedColumns":[
"GID"
]
}
]
},
{
"tableName":"QUICK_SEARCH",
"createSql":"CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER, `NAME` TEXT NOT NULL, `MODE` INTEGER NOT NULL, `CATEGORY` INTEGER NOT NULL, `KEYWORD` TEXT, `ADVANCE_SEARCH` INTEGER NOT NULL, `MIN_RATING` INTEGER NOT NULL, `PAGE_FROM` INTEGER NOT NULL, `PAGE_TO` INTEGER NOT NULL, `POSITION` INTEGER NOT NULL, PRIMARY KEY(`_id`))",
"fields":[
{
"fieldPath":"id",
"columnName":"_id",
"affinity":"INTEGER",
"notNull":false
},
{
"fieldPath":"name",
"columnName":"NAME",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"mode",
"columnName":"MODE",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"category",
"columnName":"CATEGORY",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"keyword",
"columnName":"KEYWORD",
"affinity":"TEXT",
"notNull":false
},
{
"fieldPath":"advanceSearch",
"columnName":"ADVANCE_SEARCH",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"minRating",
"columnName":"MIN_RATING",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageFrom",
"columnName":"PAGE_FROM",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"pageTo",
"columnName":"PAGE_TO",
"affinity":"INTEGER",
"notNull":true
},
{
"fieldPath":"position",
"columnName":"POSITION",
"affinity":"INTEGER",
"notNull":true
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[
"_id"
]
},
"indices":[],
"foreignKeys":[]
},
{
"ftsVersion":"FTS4",
"ftsOptions":{
"tokenizer":"simple",
"tokenizerArgs":[],
"contentTable":"GALLERIES",
"languageIdColumnName":"",
"matchInfo":"FTS4",
"notIndexedColumns":[],
"prefixSizes":[],
"preferredOrder":"ASC"
},
"contentSyncTriggers":[
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GALLERIES_FTS_BEFORE_UPDATE BEFORE UPDATE ON `GALLERIES` BEGIN DELETE FROM `GALLERIES_FTS` WHERE `docid`=OLD.`rowid`; END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GALLERIES_FTS_BEFORE_DELETE BEFORE DELETE ON `GALLERIES` BEGIN DELETE FROM `GALLERIES_FTS` WHERE `docid`=OLD.`rowid`; END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GALLERIES_FTS_AFTER_UPDATE AFTER UPDATE ON `GALLERIES` BEGIN INSERT INTO `GALLERIES_FTS`(`docid`, `TITLE`, `TITLE_JPN`, `SIMPLE_TAGS`) VALUES (NEW.`rowid`, NEW.`TITLE`, NEW.`TITLE_JPN`, NEW.`SIMPLE_TAGS`); END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_GALLERIES_FTS_AFTER_INSERT AFTER INSERT ON `GALLERIES` BEGIN INSERT INTO `GALLERIES_FTS`(`docid`, `TITLE`, `TITLE_JPN`, `SIMPLE_TAGS`) VALUES (NEW.`rowid`, NEW.`TITLE`, NEW.`TITLE_JPN`, NEW.`SIMPLE_TAGS`); END"
],
"tableName":"GALLERIES_FTS",
"createSql":"CREATE VIRTUAL TABLE IF NOT EXISTS `${TABLE_NAME}` USING FTS4(`TITLE` TEXT NOT NULL, `TITLE_JPN` TEXT NOT NULL, `SIMPLE_TAGS` TEXT, content=`GALLERIES`)",
"fields":[
{
"fieldPath":"title",
"columnName":"TITLE",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"titleJpn",
"columnName":"TITLE_JPN",
"affinity":"TEXT",
"notNull":true
},
{
"fieldPath":"simpleTags",
"columnName":"SIMPLE_TAGS",
"affinity":"TEXT",
"notNull":false
}
],
"primaryKey":{
"autoGenerate":false,
"columnNames":[]
},
"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, '7d1cfc4e9a9d506a73eb0520ae414d25')"
// This scoped response reading scope suspend function aimed at cancelling the call immediately once coroutine is cancelled.
// i.e., bind a call with a suspended coroutine, and launch another coroutine to execute reading
// Once origin coroutine is cancelled, then call cancelled, socket is closed, the reading coroutine will encounter [IOException]
// Since Okio is not suspendable/cancellable, also okhttp, [executeAsync] only make [Request -> Response] cancellable, reading a Response is still not cancellable
// Considering interrupting is not safe and performant, See https://github.com/Kotlin/kotlinx.coroutines/issues/3551#issuecomment-1353245978, we have such [usingCancellable]
// TODO: Remove logging after this function stable
Loaded 100 of 877 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.