派生自 development/c++

xuxiuxi
2019-03-15 4a1845ab43395de6838e535bdf7ca932316ee9ec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
//
// Created by pans on 4/28/18.
//
 
#ifndef TESTSQLITE_SQLITEFACEENCAP_H
#define TESTSQLITE_SQLITEFACEENCAP_H
 
#include "sqliteEncapsulation.h"
 
#include "SqliteToolkit.hpp"
 
/**
 * #todo sqlite -> Qt.sqlite
 */
/***
 * sqlite3 操作工具类
 */
class SqliteFaceEncap : public sqliteEncapsulation {
public:
    explicit SqliteFaceEncap(std::string t_string);
 
    /***
     * 创建布控底库
     * 不通用,因为内部有一个insert函数调用
     * @param t_tableName
     * @param fieldValues
     * @return
     */
    bool createTable(std::string t_tableName, FieldValues &fieldValues);
 
    /***
     * 通用的单表更新
     * @param t_tableName
     * @param fieldValues
     * @return
     */
    bool updateTable(std::string t_tableName, FieldValues &fieldValues);
 
    /***
     * 删除表
     * @param t_tableName
     * @return
     */
    bool deleteTable(std::string t_tableName);
 
    /***
     * 根据底库类型获取底库列表
     * @param type 底库类型
     * @return 底库列表
     */
    std::vector<std::string> getTableNameList(std::string type);
 
    /***
     * 获取所有已创建的表信息
     * @return
     */
    TableInfos getTableInfos();
 
public:
 
    /***
     * 添加人脸
     * @param t_tableName 表名
     * @param faceData 人脸特征结构体
     * @param fieldValues 字段集合
     * @return
     */
    std::string addFace(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues);
 
    /***
     * 更新人脸
     * @param t_tableName 表名
     * @param faceData 人脸特征结构体
     * @param fieldValues 字段集合
     * @return
     */
    bool updateFace(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues);
 
    /***
     * 向人脸特征表插入记录
     * @param t_tableName
     * @param faceData
     * @return
     */
    std::string addFaceData(std::string t_tableName, AddFaceData &faceData);
 
    //#todo
    /***
     * 添加人脸业务信息
     * @param t_tableName
     * @param fieldValues
     * @return
     */
    bool addFaceInfo(std::string t_tableName, FieldValues &fieldValues);
 
    /***
     *
     * @param t_tableName
     * @param faceData
     * @return
     */
    bool updateFaceData(std::string t_tableName, AddFaceData &faceData);
 
    /***
     *
     * @param t_tableName
     * @param fieldValues
     * @return
     */
    bool updateFaceInfo(std::string t_tableName, FieldValues &fieldValues);
 
    /***
     *
     * @param t_tableName
     * @param uuid
     * @return
     */
    bool deleteFace(std::string t_tableName, std::string uuid);
 
private:
    /***
     *
     * @param t_tableName
     * @param uuid
     * @return
     */
    bool deleteFaceData(std::string t_tableName, std::string uuid);
 
public:
    /***
     * 根据人脸表名称获取人脸特征列表
     * @param tableName 表面
     * @return 人脸特征集合
     */
    FeatureDBWithUrlCache *getFacesFromTable(std::string tableName);
 
    FaceInfosCache getFaceInfoFromTable(std::string tableName);
 
    FeatureDBWithUrlCache getFacesFromTableWhereDate(std::string tableName, std::string date);
 
 
private:
 
    void initDB(const char *t_string) const;
 
private:
    sqlite3 *db;
    char *zErrMsg = 0;
    std::mutex dataMtx;
 
 
 
//    FeatureDBCache m_db;
 
    std::map<std::string, FeatureDBWithUrlCache> m_dbCache;
};
 
 
#endif //TESTSQLITE_SQLITEFACEENCAP_H