Raw search queries
This commit is contained in:
parent
9dd449fe1a
commit
4fc06cc527
@ -131,7 +131,17 @@ public class DatabaseController {
|
|||||||
queue.inDatabase { db in
|
queue.inDatabase { db in
|
||||||
let sortKey = sortDescriptor?.key ?? "rank"
|
let sortKey = sortDescriptor?.key ?? "rank"
|
||||||
let asc = sortDescriptor?.ascending == false ? "DESC" : "ASC"
|
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)
|
let sequence = StatusSequence(results: results)
|
||||||
completion(sequence)
|
completion(sequence)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user