| 335 | } |
| 336 | |
| 337 | QList<CDatabaseUrl::UrlItem> CDatabaseUrl::Search(const QString &keyword) |
| 338 | { |
| 339 | QList<UrlItem> items; |
| 340 | |
| 341 | QSqlQuery query(GetDatabase()); |
| 342 | QString searchPattern = "%" + keyword + "%"; |
| 343 | query.prepare( |
| 344 | "SELECT id, url, title, visit_time, icon " |
| 345 | "FROM " + m_szTableName + " " |
| 346 | "WHERE url LIKE :pattern OR title LIKE :pattern " |
| 347 | "ORDER BY visit_time DESC" |
| 348 | ); |
| 349 | query.bindValue(":pattern", searchPattern); |
| 350 | if (query.exec()) { |
| 351 | while (query.next()) { |
| 352 | UrlItem item; |
| 353 | item.id = query.value(0).toInt(); |
| 354 | item.szUrl = query.value(1).toString(); |
| 355 | item.szTitle = query.value(2).toString(); |
| 356 | item.visit_time = query.value(3).toDateTime(); |
| 357 | item.icon = m_iconDB.GetIcon(query.value(4).toInt()); |
| 358 | items.append(item); |
| 359 | } |
| 360 | } else { |
| 361 | SetError("Failed to search:" + query.lastError().text() |
| 362 | + "; Sql: " + query.executedQuery()); |
| 363 | qCritical(log) << GetError(); |
| 364 | } |
| 365 | |
| 366 | return items; |
| 367 | } |
| 368 | |
| 369 | bool CDatabaseUrl::ExportToJson(QJsonObject &obj) |
| 370 | { |
no test coverage detected