玉兔远程控制 0.1.0-bate6
载入中...
搜索中...
未找到
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
21{
22 Q_OBJECT
23public:
24 static CHistoryDatabase* Instance(const QString& szPath = QString());
25
26 // 历史记录操作
27 bool addHistoryEntry(const QString &url);
28 bool addHistoryEntry(const QString &url, const QString& title, const QDateTime& time);
29 bool updateHistoryEntry(const QString& url, const QString &title = QString(), const QIcon& icon = QIcon());
30 bool updateHistoryEntry(int id, const QString &title = QString(), const QIcon& icon = QIcon());
31 bool deleteHistoryEntry(int id);
32 bool deleteHistoryEntry(const QString& url);
33 bool deleteDomainEntries(const QString& szDomain);
34 bool clearHistory(int days = 0); // 0表示清除所有
35 void scheduleCleanup(int maxDays, int maxCount);
36
37 // 查询操作
38 QList<HistoryItem> getAllHistory(int limit = -1, int offset = 0);
39 QList<HistoryItem> getHistoryByDate(const QDate &date);
40 QList<HistoryItem> getHistoryByDate(const QDate &start, const QDate &end, int limit = 100);
41 QList<HistoryItem> searchHistory(const QString &keyword);
42 HistoryItem getHistoryByUrl(const QString &url);
43 HistoryItem getHistoryById(int id);
44
45 // 统计信息
46 int getHistoryCount();
47 QDateTime getLastVisitTime();
48
49 bool importFromCSV(const QString& filename);
50 bool exportToCSV(const QString &filename);
51 bool importFromJson(const QString& filename);
52 bool exportToJson(const QString& filename);
53private:
54 QString escapeForCsv(const QString &text);
55 QString unescapeCsvField(const QString &field);
56 bool validateCsvHeader(const QString &headerLine);
57 QStringList parseCsvLine(const QString &line);
58 bool importCsvRecord(const QStringList &fields);
59
60private:
61 explicit CHistoryDatabase(QObject *parent = nullptr);
63 bool OnInitializeDatabase() override;
64 CDatabaseUrl m_UrlDB;
65
66 virtual bool ExportToJson(QJsonObject &obj) override;
67 virtual bool ImportFromJson(const QJsonObject &obj) override;
68};
69
70void enableSqlTrace(const QString& connectionName = QSqlDatabase::defaultConnection);