Raw search queries

This commit is contained in:
Shadowfacts 2025-02-12 12:07:30 -05:00
parent 9dd449fe1a
commit 4fc06cc527

View File

@ -131,7 +131,17 @@ public class DatabaseController {
queue.inDatabase { db in
let sortKey = sortDescriptor?.key ?? "rank"
let asc = sortDescriptor?.ascending == false ? "DESC" : "ASC"
let results = try! db.executeQuery("SELECT * FROM statuses_fts WHERE statuses_fts match ? ORDER BY \(sortKey) \(asc)", values: [query as NSString])
let sql: String
let queryValue: String
if let match = query.wholeMatch(of: #/"(.+)"/#) {
sql = "SELECT * FROM statuses WHERE status_content || ' ' || coalesce(summary, '') LIKE ? ESCAPE '\\' ORDER BY \(sortKey) \(asc)"
let escaped = match.output.1.replacing("%", with: "\\%").replacing("_", with: "\\_")
queryValue = "%\(escaped)%"
} else {
sql = "SELECT * FROM statuses_fts WHERE statuses_fts match ? ORDER BY \(sortKey) \(asc)"
queryValue = query
}
let results = try! db.executeQuery(sql, values: [queryValue as NSString])
let sequence = StatusSequence(results: results)
completion(sequence)
}