@@ -105,6 +105,26 @@ bool CDatabaseFilter::isEmpty()
105105 return !query.next ();
106106}
107107
108+ int CDatabaseFilter::OnProcess (std::function<int (const QString &)> cb, bool bErrExit)
109+ {
110+ QSqlQuery query (GetDatabase ());
111+ query.prepare (" SELECT `key` FROM " + m_szTableName);
112+ bool bRet = query.exec ();
113+ if (!bRet) {
114+ qCritical (log) << " Failed to isEmpty:"
115+ << query.lastError ().text ()
116+ << " Sql:" << query.executedQuery ();
117+ return -1 ;
118+ }
119+ while (query.next ()) {
120+ QString szKey = query.value (0 ).toString ();
121+ int nRet = cb (szKey);
122+ if (bErrExit && nRet)
123+ return nRet;
124+ }
125+ return 0 ;
126+ }
127+
108128bool CDatabaseFilter::ExportToJson (QJsonObject &obj)
109129{
110130 return true ;
@@ -117,32 +137,42 @@ bool CDatabaseFilter::ImportFromJson(const QJsonObject &obj)
117137
118138bool CDatabaseFilter::OnInitializeSqliteDatabase ()
119139{
120- return true ;
121- }
140+ QSqlQuery query (GetDatabase ());
122141
123- bool CDatabaseFilter::OnInitializeMySqlDatabase ()
124- {
125- return true ;
142+ query.prepare (
143+ " CREATE TABLE IF NOT EXISTS "
144+ + m_szTableName +
145+ " ("
146+ " `key` TEXT PRIMARY KEY NOT NULL"
147+ " )"
148+ );
149+ bool success = query.exec ();
150+
151+ if (!success) {
152+ qCritical (log) << " Failed to create sqlite table:"
153+ << m_szTableName << query.lastError ().text ()
154+ << " Sql:" << query.executedQuery ();
155+ return false ;
156+ }
126157}
127158
128- bool CDatabaseFilter::OnInitializeDatabase ()
159+ bool CDatabaseFilter::OnInitializeMySqlDatabase ()
129160{
130161 QSqlQuery query (GetDatabase ());
131162
132- bool success = query.exec (
163+ query.prepare (
133164 " CREATE TABLE IF NOT EXISTS "
134165 + m_szTableName +
135166 " ("
136- " `key` TEXT PRIMARY KEY NOT NULL"
167+ " `key` TEXT NOT NULL,"
168+ " UNIQUE KEY `uk_key` (`key`(255))"
137169 " )"
138170 );
139-
171+ bool success = query. exec ();
140172 if (!success) {
141- qCritical (log) << " Failed to create folders sqlite table:"
173+ qCritical (log) << " Failed to create mysql table:"
142174 << m_szTableName << query.lastError ().text ()
143175 << " Sql:" << query.executedQuery ();
144176 return false ;
145177 }
146-
147- return true ;
148178}
0 commit comments