Faster parseResult array builder
This commit is contained in:
+5
-1
@@ -23,7 +23,7 @@ package com.vitorpamplona.quartz.nip01Core.store.sqlite
|
|||||||
import android.database.sqlite.SQLiteDatabase
|
import android.database.sqlite.SQLiteDatabase
|
||||||
|
|
||||||
class AddressableModule : IModule {
|
class AddressableModule : IModule {
|
||||||
fun create(db: SQLiteDatabase) {
|
override fun create(db: SQLiteDatabase) {
|
||||||
db.execSQL(
|
db.execSQL(
|
||||||
"""
|
"""
|
||||||
CREATE UNIQUE INDEX addressable_idx
|
CREATE UNIQUE INDEX addressable_idx
|
||||||
@@ -69,4 +69,8 @@ class AddressableModule : IModule {
|
|||||||
""".trimIndent(),
|
""".trimIndent(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun drop(db: SQLiteDatabase) {}
|
||||||
|
|
||||||
|
override fun deleteAll(db: SQLiteDatabase) {}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-7
@@ -258,7 +258,7 @@ class EventIndexesModule(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun <T : Event> parseResults(cursor: Cursor): List<T> {
|
private fun <T : Event> parseResults(cursor: Cursor): List<T> {
|
||||||
val events = ArrayList<T>()
|
val events = ArrayList<T>(cursor.count)
|
||||||
|
|
||||||
while (cursor.moveToNext()) {
|
while (cursor.moveToNext()) {
|
||||||
events.add(
|
events.add(
|
||||||
@@ -396,29 +396,26 @@ class EventIndexesModule(
|
|||||||
|
|
||||||
val projection =
|
val projection =
|
||||||
buildString {
|
buildString {
|
||||||
val anchorColumn: String
|
|
||||||
val joins = mutableListOf<String>()
|
val joins = mutableListOf<String>()
|
||||||
|
|
||||||
if (hasHeaders) {
|
if (hasHeaders) {
|
||||||
append("SELECT event_headers.row_id as row_id FROM event_headers")
|
append("SELECT event_headers.row_id as row_id FROM event_headers")
|
||||||
anchorColumn = "event_headers.row_id"
|
|
||||||
|
|
||||||
if (hasSearch) {
|
if (hasSearch) {
|
||||||
joins.add("INNER JOIN ${fts.tableName} ON ${fts.tableName}.${fts.eventHeaderRowIdName} = $anchorColumn")
|
joins.add("INNER JOIN ${fts.tableName} ON ${fts.tableName}.${fts.eventHeaderRowIdName} = event_headers.row_id")
|
||||||
}
|
}
|
||||||
|
|
||||||
filter.tags?.forEach { (tagName, _) ->
|
filter.tags?.forEach { (tagName, _) ->
|
||||||
if (tagName != "d") {
|
if (tagName != "d") {
|
||||||
joins.add("INNER JOIN event_tags as tag$tagName ON tag$tagName.event_header_row_id = $anchorColumn")
|
joins.add("INNER JOIN event_tags as tag$tagName ON tag$tagName.event_header_row_id = event_headers.row_id")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (hasSearch) {
|
} else if (hasSearch) {
|
||||||
append("SELECT ${fts.tableName}.${fts.eventHeaderRowIdName} as row_id FROM ${fts.tableName}")
|
append("SELECT ${fts.tableName}.${fts.eventHeaderRowIdName} as row_id FROM ${fts.tableName}")
|
||||||
anchorColumn = "${fts.tableName}.${fts.eventHeaderRowIdName}"
|
|
||||||
|
|
||||||
filter.tags?.forEach { (tagName, _) ->
|
filter.tags?.forEach { (tagName, _) ->
|
||||||
if (tagName != "d") {
|
if (tagName != "d") {
|
||||||
joins.add("INNER JOIN event_tags as tag$tagName ON tag$tagName.event_header_row_id = $anchorColumn")
|
joins.add("INNER JOIN event_tags as tag$tagName ON tag$tagName.event_header_row_id = ${fts.tableName}.${fts.eventHeaderRowIdName}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user