core: properly escape fts query

This commit is contained in:
Abdullah Atta
2023-11-22 08:48:16 +05:00
parent 8951352f63
commit 2f62c72cfe

View File

@@ -42,16 +42,17 @@ export default class Lookup {
notes(query: string, noteIds?: string[]) {
return this.toSearchResults(async (limit) => {
const db = this.db.sql() as Kysely<DatabaseSchemaWithFTS>;
query = query.replace(/"/, '""');
const result = await db
.with("matching", (eb) =>
eb
.selectFrom("content_fts")
.where("data", "match", query)
.where("data", "match", `"${query}"`)
.select(["noteId as id", "rank"])
.unionAll(
eb
.selectFrom("notes_fts")
.where("title", "match", query)
.where("title", "match", `"${query}"`)
// add 10 weight to title
.select(["id", sql.raw<number>(`rank * 10`).as("rank")])
)