commit
800f0609d6
@ -0,0 +1,71 @@ |
||||
package io.legado.app.data.dao |
||||
|
||||
import androidx.paging.DataSource |
||||
import androidx.room.* |
||||
import io.legado.app.data.entities.ExploreSearchUrl |
||||
|
||||
|
||||
@Dao |
||||
interface ExploreSearchUrlDao { |
||||
|
||||
companion object { |
||||
private const val ORDER_DEFAULT = "ORDER BY sourceId ASC, defOrder ASC" |
||||
private const val ORDER_USAGE = "ORDER BY usage DESC, lastUseTime DESC" |
||||
private const val ORDER_TIME = "ORDER BY lastUseTime DESC" |
||||
private const val QUERY_NAME = "name LIKE '%' || :name || '%'" |
||||
private const val QUERY_ENABLED_EXPLORE = "WHERE type = 0 AND isEnabled = 1" |
||||
} |
||||
|
||||
// 用于发现列表,默认排序 |
||||
@Query("SELECT * FROM explore_search_urls $QUERY_ENABLED_EXPLORE $ORDER_DEFAULT") |
||||
fun observeExploreUrls(): DataSource.Factory<Int, ExploreSearchUrl> |
||||
|
||||
// 用于发现列表,按使用次数排序 |
||||
@Query("SELECT * FROM explore_search_urls $QUERY_ENABLED_EXPLORE $ORDER_USAGE") |
||||
fun observeExploreUrlsByUsage(): DataSource.Factory<Int, ExploreSearchUrl> |
||||
|
||||
// 用于发现列表,按使用时间排序 |
||||
@Query("SELECT * FROM explore_search_urls $QUERY_ENABLED_EXPLORE $ORDER_TIME") |
||||
fun observeExploreUrlsByTime(): DataSource.Factory<Int, ExploreSearchUrl> |
||||
|
||||
// 用于搜索时的发现列表,默认排序 |
||||
@Query("SELECT * FROM explore_search_urls $QUERY_ENABLED_EXPLORE AND $QUERY_NAME $ORDER_DEFAULT") |
||||
fun observeFilteredExploreUrls(name: String): DataSource.Factory<Int, ExploreSearchUrl> |
||||
|
||||
// 用于搜索时的发现列表,按使用次数排序 |
||||
@Query("SELECT * FROM explore_search_urls $QUERY_ENABLED_EXPLORE AND $QUERY_NAME $ORDER_USAGE") |
||||
fun observeFilteredExploreUrlsByUsage(): DataSource.Factory<Int, ExploreSearchUrl> |
||||
|
||||
// 用于搜索时的发现列表,按使用时间排序 |
||||
@Query("SELECT * FROM explore_search_urls $QUERY_ENABLED_EXPLORE AND $QUERY_NAME $ORDER_TIME") |
||||
fun observeFilteredExploreUrlsByTime(): DataSource.Factory<Int, ExploreSearchUrl> |
||||
|
||||
// 获取特定书源的发现 |
||||
@Query("SELECT * FROM explore_search_urls $QUERY_ENABLED_EXPLORE AND sourceId = :sourceId") |
||||
fun findExploreUrlsBySourceId(sourceId: Int): List<ExploreSearchUrl> |
||||
|
||||
// 获取特定书源的搜索链接 |
||||
@Query("SELECT * FROM explore_search_urls WHERE type = 1 AND sourceId = :sourceId") |
||||
fun findSearchUrlsBySourceId(sourceId: Int): List<ExploreSearchUrl> |
||||
|
||||
// 所有的搜索链接 |
||||
@get:Query("SELECT * FROM explore_search_urls WHERE type = 1") |
||||
val allSearchUrls: List<ExploreSearchUrl> |
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE) |
||||
fun insert(vararg keywords: ExploreSearchUrl) |
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE) |
||||
fun insert(keyword: ExploreSearchUrl): Long |
||||
|
||||
@Update |
||||
fun update(vararg keywords: ExploreSearchUrl) |
||||
|
||||
@Delete |
||||
fun delete(vararg keywords: ExploreSearchUrl) |
||||
|
||||
// 批量删除特定书源的发现和搜索链接,一般用于更新书源时 |
||||
@Query("DELETE FROM explore_search_urls WHERE sourceId = :sourceId") |
||||
fun deleteBySourceId(sourceId: Int) |
||||
|
||||
} |
@ -0,0 +1,32 @@ |
||||
package io.legado.app.data.dao |
||||
|
||||
import androidx.paging.DataSource |
||||
import androidx.room.* |
||||
import io.legado.app.data.entities.SearchKeyword |
||||
|
||||
|
||||
@Dao |
||||
interface SearchKeywordDao { |
||||
|
||||
@Query("SELECT * FROM search_keywords ORDER BY usage DESC") |
||||
fun observeByUsage(): DataSource.Factory<Int, SearchKeyword> |
||||
|
||||
@Query("SELECT * FROM search_keywords ORDER BY lastUseTime DESC") |
||||
fun observeByTime(): DataSource.Factory<Int, SearchKeyword> |
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE) |
||||
fun insert(vararg keywords: SearchKeyword) |
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE) |
||||
fun insert(keyword: SearchKeyword): Long |
||||
|
||||
@Update |
||||
fun update(vararg keywords: SearchKeyword) |
||||
|
||||
@Delete |
||||
fun delete(vararg keywords: SearchKeyword) |
||||
|
||||
@Query("DELETE FROM search_keywords") |
||||
fun deleteAll() |
||||
|
||||
} |
@ -0,0 +1,29 @@ |
||||
package io.legado.app.data.entities |
||||
|
||||
import android.os.Parcelable |
||||
import androidx.room.Entity |
||||
import androidx.room.ForeignKey |
||||
import androidx.room.Index |
||||
import androidx.room.PrimaryKey |
||||
import kotlinx.android.parcel.Parcelize |
||||
|
||||
@Parcelize |
||||
@Entity(tableName = "explore_search_urls", |
||||
indices = [(Index(value = ["sourceId", "url"], unique = true))], |
||||
foreignKeys = [(ForeignKey(entity = Source::class, |
||||
parentColumns = ["sourceId"], |
||||
childColumns = ["sourceId"], |
||||
onDelete = ForeignKey.CASCADE))]) // 删除书源时自动删除章节 |
||||
data class ExploreSearchUrl ( |
||||
@PrimaryKey(autoGenerate = true) |
||||
var esId: Int = 0, // 编号 |
||||
var sourceId: Int = 0, // 书源Id |
||||
var name: String = "", // 发现名称,搜索可以没有 |
||||
var url: String = "", // 地址 |
||||
var type: Int = 0, // 类型,0 为发现,1 为搜索 |
||||
var isEnabled: Boolean = true, // 是否启用 |
||||
var defOrder: Int = 0, // 默认排序,是在编辑书源的时候的顺序 |
||||
var usage: Int = 0, // 使用次数,用于按使用次数排序 |
||||
var lastUseTime: Long = 0L // 最后一次使用的时间 |
||||
) : Parcelable |
||||
|
@ -0,0 +1,17 @@ |
||||
package io.legado.app.data.entities |
||||
|
||||
import android.os.Parcelable |
||||
import androidx.room.Entity |
||||
import androidx.room.Index |
||||
import androidx.room.PrimaryKey |
||||
import kotlinx.android.parcel.Parcelize |
||||
|
||||
|
||||
@Parcelize |
||||
@Entity(tableName = "search_keywords", indices = [(Index(value = ["word"], unique = true))]) |
||||
data class SearchKeyword ( |
||||
@PrimaryKey |
||||
var word: String = "", // 搜索关键词 |
||||
var usage: Int = 1, // 使用次数 |
||||
var lastUseTime: Long = 0 // 最后一次使用时间 |
||||
): Parcelable |
Loading…
Reference in new issue