6#include <QLoggingCategory>
8#include "DatabaseFilter.h"
10static Q_LOGGING_CATEGORY(log,
"DB.Filter")
13 , m_szTableName(
"filter")
15 if(!szSuffix.isEmpty()) {
16 QString szSuf = szSuffix;
17 szSuf = szSuf.replace(
"/",
"_");
18 m_szTableName = m_szTableName +
"_" + szSuf;
19 m_szConnectName =
"connect_filter_" + szSuf;
23bool CDatabaseFilter::contains(
const QString& szKey)
26 QSqlQuery query(GetDatabase());
29 query.prepare(
"SELECT `key` FROM " + m_szTableName
30 +
" WHERE `key` = :key "
32 query.bindValue(
":key", szKey);
35 qCritical(log) <<
"Failed to contains[" + szKey +
"]:"
36 << query.lastError().text()
37 <<
"Sql:" << query.executedQuery();
43int CDatabaseFilter::AddKey(
const QString &szKey)
46 if(contains(szKey))
return false;
48 QSqlQuery query(GetDatabase());
50 "INSERT INTO " + m_szTableName +
" (`key`) VALUES (:key) "
52 query.bindValue(
":key", szKey);
53 bool bRet = query.exec();
56 qCritical(log) <<
"Failed to add key[" + szKey +
"]:"
57 << query.lastError().text()
58 <<
"Sql:" << query.executedQuery();
64int CDatabaseFilter::RemoveKey(
const QString &szKey)
66 QSqlQuery query(GetDatabase());
67 query.prepare(
"DELETE FROM " + m_szTableName +
" WHERE `key` = :key");
68 query.bindValue(
":key", szKey);
70 bool bRet = query.exec();
72 qCritical(log) <<
"Failed to remove key[" + szKey +
"]:"
73 << query.lastError().text()
74 <<
"Sql:" << query.executedQuery();
80int CDatabaseFilter::Clear()
82 QSqlQuery query(GetDatabase());
83 query.prepare(
"DELETE FROM " + m_szTableName);
84 bool bRet = query.exec();
86 qCritical(log) <<
"Failed to clear:"
87 << query.lastError().text()
88 <<
"Sql:" << query.executedQuery();
94bool CDatabaseFilter::isEmpty()
96 QSqlQuery query(GetDatabase());
97 query.prepare(
"SELECT `key` FROM " + m_szTableName);
98 bool bRet = query.exec();
100 qCritical(log) <<
"Failed to isEmpty:"
101 << query.lastError().text()
102 <<
"Sql:" << query.executedQuery();
105 return !query.next();
108int CDatabaseFilter::OnProcess(std::function<
int (
const QString &)> cb,
bool bErrExit)
110 QSqlQuery query(GetDatabase());
111 query.prepare(
"SELECT `key` FROM " + m_szTableName);
112 bool bRet = query.exec();
114 qCritical(log) <<
"Failed to isEmpty:"
115 << query.lastError().text()
116 <<
"Sql:" << query.executedQuery();
119 while(query.next()) {
120 QString szKey = query.value(0).toString();
121 int nRet = cb(szKey);
128bool CDatabaseFilter::ExportToJson(QJsonObject &obj)
133bool CDatabaseFilter::ImportFromJson(
const QJsonObject &obj)
138bool CDatabaseFilter::OnInitializeSqliteDatabase()
140 QSqlQuery query(GetDatabase());
143 "CREATE TABLE IF NOT EXISTS "
146 " `key` TEXT PRIMARY KEY NOT NULL"
149 bool success = query.exec();
152 qCritical(log) <<
"Failed to create sqlite table:"
153 << m_szTableName << query.lastError().text()
154 <<
"Sql:" << query.executedQuery();
160bool CDatabaseFilter::OnInitializeMySqlDatabase()
162 QSqlQuery query(GetDatabase());
165 "CREATE TABLE IF NOT EXISTS "
168 " `key` TEXT NOT NULL,"
169 " UNIQUE KEY `uk_key` (`key`(255))"
172 bool success = query.exec();
174 qCritical(log) <<
"Failed to create mysql table:"
175 << m_szTableName << query.lastError().text()
176 <<
"Sql:" << query.executedQuery();
The CDatabaseFilter class