kDB: Knowledge DataBase
Loading...
Searching...
No Matches
QueryCache_p.h
1#include <QMutex>
2
3#include <knowCore/Messages.h>
4
5#include "DeltaParser/Parser_p.h"
6
7namespace kDB::Repository::VersionControl
8{
9 struct QueryCache
10 {
11 static DeltaParser::Parser::Result get(const QByteArray& _query)
12 {
13
14 QMutexLocker l(&m);
15 auto it = queries.find(_query);
16 if(it != queries.end())
17 {
18 return it.value();
19 }
20 l.unlock();
21
22 knowCore::Messages messages;
23 DeltaParser::Parser::Result r = DeltaParser::Parser::parse(_query, &messages);
24 if(messages.hasErrors())
25 {
26 KNOWCORE_LOG_ERROR("Error in default merge strategy while parsing query {}: {}", QString::fromUtf8(_query), messages.toString());
27 return DeltaParser::Parser::Result{false, {}, {}};
28 }
29
30 l.relock();
31 queries[_query] = r;
32 return r;
33 }
34 static void add(const QByteArray& _query, const QList<knowRDF::Triple>& inserted, const QList<knowRDF::Triple>& deleted)
35 {
36 QMutexLocker l(&m);
37 queries[_query] = {true, inserted, deleted};
38 }
39 private:
41 static QMutex m;
42 };
43
44}
Definition Forward.h:10
Definition Revision.h:9
Definition Messages.h:18
QString toString() const
Definition Messages.cpp:77