kDB: Knowledge DataBase
Loading...
Searching...
No Matches
Sql_h.h
1// clang-format off
2/% QString guard = _database->namespaces().join("_").toUpper() + "_SQL_H_";
3%/ #ifndef _/%= guard %/
4#define _/%= guard %/
5
6#include <QVariant>
7
8namespace /%= _database->namespaces().join("::") %/::Sql
9{
10 enum class Sort
11 {
12 ASC,
13 DESC
14 };
15 enum class Operand
16 {
17 EQ, GT, LT, LTE, GTE, NEQ, LIKE
18 };
19 namespace details
20 {
21 template<typename _T_, class Enable = void>
22 struct value_conversion_helper;
23
24 template<typename _T_>
25 requires (not std::is_enum_v<_T_>)
26 struct value_conversion_helper<_T_>
27 {
28 static knowCore::Value toValue(const _T_& _t)
29 {
31 }
32 static _T_ fromValue(const knowCore::Value& _variant)
33 {
34 if(_variant.isEmpty())
35 {
36 return _T_();
37 } else {
38 return _variant.value<_T_>(knowCore::TypeCheckingMode::Force).expect_success();
39 }
40 }
41 };
42 template<typename _T_>
43 requires (std::is_enum_v<_T_>)
44 struct value_conversion_helper<_T_>
45 {
46 static knowCore::Value toValue(const _T_& _t)
47 {
48 return knowCore::Value::fromValue(int(_t));
49 }
50 static _T_ fromValue(const knowCore::Value& _variant)
51 {
52 if(_variant.isEmpty())
53 {
54 return _T_();
55 } else {
56 return _T_(_variant.value<int>().expect_success());
57 }
58 }
59 };
60 }
61
62 template<typename _T_>
63 knowCore::Value toVariant(const _T_& _t)
64 {
65 return details::value_conversion_helper<_T_>::toValue(_t);
66 }
67 template<typename _T_>
68 _T_ fromVariant(const knowCore::Value& _variant)
69 {
70 return details::value_conversion_helper<_T_>::fromValue(_variant);
71 }
72
73}
74
75#endif
Definition Value.h:21
bool isEmpty() const
Definition Value.cpp:234
static Value fromValue(const _T_ &_value)
Definition Value.h:241
cres_qresult< _T_ > value(TypeCheckingMode _conversion=TypeCheckingMode::Safe) const
Definition Value.h:353