Rabbit Remote Control 0.1.0-bate8
Loading...
Searching...
No Matches
HistoryDatabase.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4
5#include <QObject>
6#include <QSqlDatabase>
7#include <QDateTime>
8#include <QUrl>
9#include <QIcon>
10#include "DatabaseUrl.h"
11
13 int id;
14 QIcon icon;
15 QString url;
16 QString title;
17 QDateTime visitTime;
18};
19
25{
26 Q_OBJECT
27public:
28 explicit CHistoryDatabase(QObject *parent = nullptr);
30
31 // 历史记录操作
32 bool addHistoryEntry(const QString &url);
33 bool addHistoryEntry(const QString &url, const QString& title, const QDateTime& time);
34 bool updateHistoryEntry(const QString& url, const QString &title = QString(), const QIcon& icon = QIcon());
35 bool updateHistoryEntry(int id, const QString &title = QString(), const QIcon& icon = QIcon());
36 bool deleteHistoryEntry(int id);
37 bool deleteHistoryEntry(const QString& url);
38 bool deleteDomainEntries(const QString& szDomain);
39 bool clearHistory(int days = 0); // 0表示清除所有
40 void scheduleCleanup(int maxDays, int maxCount);
41
42 // 查询操作
43 [[nodiscard]] QList<HistoryItem> getAllHistory(int limit = -1, int offset = 0);
44 [[nodiscard]] QList<HistoryItem> getHistoryByDate(const QDate &date);
45 [[nodiscard]] QList<HistoryItem> getHistoryByDate(const QDate &start, const QDate &end, int limit = 100);
46 [[nodiscard]] QList<HistoryItem> searchHistory(const QString &keyword);
47 [[nodiscard]] HistoryItem getHistoryByUrl(const QString &url);
48 [[nodiscard]] HistoryItem getHistoryById(int id);
49
50 // 统计信息
51 [[nodiscard]] int getHistoryCount();
52 [[nodiscard]] QDateTime getLastVisitTime();
53
54private:
55 [[nodiscard]] bool OnInitializeDatabase() override;
56 CDatabaseUrl m_UrlDB;
57
58 [[nodiscard]] virtual bool ExportToJson(QJsonObject &obj) override;
59 [[nodiscard]] virtual bool ImportFromJson(const QJsonObject &obj) override;
60
61 // CDatabase interface
62protected:
63 [[nodiscard]] virtual bool OnInitializeSqliteDatabase() override;
64 [[nodiscard]] virtual bool OnInitializeMySqlDatabase() override;
65};
66
67void enableSqlTrace(const QString& connectionName = QSqlDatabase::defaultConnection);
Provide interfaces such as opening the database and initializing the database.
Definition Database.h:21
The CHistoryDatabase class.
bool OnInitializeDatabase() override
Initialize database.