Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
华为原神
Project-C
提交
e64669e0
P
Project-C
项目概览
华为原神
/
Project-C
与 Fork 源项目一致
Fork自
Pity·Monster / Project-C
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Project-C
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e64669e0
编写于
2月 18, 2024
作者:
Q
qq_36105691
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat[SQLiteObject.h]: Add simple reflection ability
上级
166d2b19
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
66 addition
and
7 deletion
+66
-7
222100414/src/CMakeLists.txt
222100414/src/CMakeLists.txt
+2
-1
222100414/src/DWASearch.cpp
222100414/src/DWASearch.cpp
+24
-6
222100414/src/SQLiteObject.h
222100414/src/SQLiteObject.h
+40
-0
未找到文件。
222100414/src/CMakeLists.txt
浏览文件 @
e64669e0
...
...
@@ -12,5 +12,6 @@ add_executable(DWASearch DWASearch.cpp
DatabaseManager.cpp
DatabaseManager.h
Logger.cpp
Logger.h
)
Logger.h
SQLiteObject.h
)
target_link_libraries
(
DWASearch sqlite3
)
222100414/src/DWASearch.cpp
浏览文件 @
e64669e0
#include "Logger.h"
#include "DatabaseManager.h"
#include "SQLiteObject.h"
#include <map>
class
Player
{
SQLITE_OBJECT
DECLARE_PROPERTY
(
id
,
int
)
DECLARE_PROPERTY
(
firstName
,
std
::
string
)
DECLARE_PROPERTY
(
lastName
,
std
::
string
)
DECLARE_PROPERTY
(
country
,
std
::
string
)
};
int
main
(
int
argc
,
char
*
argv
[],
[[
maybe_unused
]]
char
*
envp
[])
{
LOG_INFO
(
"Starting DWASearch"
);
LOG_DEBUG
(
"Debugging is enabled"
);
LOG_TRACE
(
"Tracing is enabled"
);
LOG_ERROR
(
"This is an error"
);
LOG_WARNING
(
"This is a warning"
);
const
std
::
string
sql
=
"SELECT * FROM Player"
;
auto
db
=
Mika
::
DatabaseManager
::
getInstance
();
auto
results
=
db
->
executeQuery
<
Player
>
(
sql
);
for
(
const
auto
&
result
:
results
)
{
LOG_INFO
(
"Player: "
+
result
.
getfirstName
()
+
" "
+
result
.
getlastName
()
+
" from "
+
result
.
getcountry
());
}
}
222100414/src/SQLiteObject.h
0 → 100644
浏览文件 @
e64669e0
//
// Created by Adarion on 2024/2/18.
//
#ifndef DWASEARCH_SQLITEOBJECT_H
#define DWASEARCH_SQLITEOBJECT_H
#include <set>
#include <functional>
#include "sqlite3.h"
#include "DatabaseManager.h"
#define DECLARE_PROPERTY(name, type) \
private: \
type name = {}; \
[[maybe_unused]] int name##Setter = [this]() { \
propertiesSetters.emplace_back([&](sqlite3_stmt *stmt, int index) { \
name = Mika::DatabaseManager::getResultValue<type>(stmt, index); \
}); \
\
return 0; \
}(); \
public: \
[[nodiscard]]type get##name() const { return name; } \
void set##name(type &&value) { name = std::move(value); }
#define SQLITE_OBJECT \
private: \
std::vector<std::function<void(sqlite3_stmt *, int)>> propertiesSetters; \
public: \
void fillData(sqlite3_stmt *stmt) { \
int index = 0; \
for (auto &setter : propertiesSetters) { \
setter(stmt, index++); \
} \
};
#endif //DWASEARCH_SQLITEOBJECT_H
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录