Server
 
로딩중...
검색중...
일치하는것 없음
db_management.hpp
이 파일의 Documentation 페이지로 가기
1
7// SQLite DB detections 테이블 관리 모듈
8
9#pragma once
10#include <SQLiteCpp/SQLiteCpp.h> // SQLiteC++ 외부 라이브러리
11#include <fstream> // 이미지 파일 테스트용
12#include <iostream> // 표준 입출력 (std::cout, std::cerr)
13#include <string> // 문자열 처리 (std::string)
14#include <vector> // 동적 배열 (std::vector)
15
16// 비밀번호 / 복구코드 해싱을 위한 헤더 파일
17#include "hash.hpp"
18
19
23struct Detection {
24 std::vector<unsigned char> imageBlob;
25 std::string timestamp;
26};
27
28
33struct CrossLine {
34 int index;
35 int x1;
36 int y1;
37 int x2;
38 int y2;
39 std::string name;
40 std::string mode;
41};
42
43
48struct BaseLine {
49 int index;
51 int x1;
52 int y1;
54 int x2;
55 int y2;
56};
57
58
64 int index;
65 double a;
66 double b;
67};
68
69
74struct Account {
75 std::string id;
76 std::string passwd;
77 std::string otp_secret;
78 bool use_otp;
79};
80
81
87 std::string id;
88 std::string code;
89 int used;
90};
91
92
97void create_table_detections(SQLite::Database& db);
98
99
106bool insert_data_detections(SQLite::Database& db, Detection detection);
107
108
117 SQLite::Database& db, std::string startTimestamp, std::string endTimestamp);
118
119
124void delete_all_data_detections(SQLite::Database& db);
125
126
131void create_table_lines(SQLite::Database& db);
132
133
140bool insert_data_lines(SQLite::Database& db, CrossLine crossLine);
141
142
148std::vector<CrossLine> select_all_data_lines(SQLite::Database& db);
149
150
157bool delete_data_lines(SQLite::Database& db, int indexNum);
158
159
165bool delete_all_data_lines(SQLite::Database& db);
166
167
172void create_table_baseLines(SQLite::Database& db);
173
174
180std::vector<BaseLine> select_all_data_baseLines(SQLite::Database& db);
181
182
189bool insert_data_baseLines(SQLite::Database& db, BaseLine baseline);
190
191
198bool update_data_baseLines(SQLite::Database& db, BaseLine baseline);
199
200
206bool delete_all_data_baseLines(SQLite::Database& db);
207
208
213void create_table_verticalLineEquations(SQLite::Database& db);
214
215
223 int index);
224
225
233 SQLite::Database& db, VerticalLineEquation verticalLineEquation);
234
235
241bool delete_all_data_verticalLineEquations(SQLite::Database& db);
242
243
248void create_table_accounts(SQLite::Database& db);
249
250
258Account* select_data_accounts(SQLite::Database& db, std::string id, std::string passwd);
259
260
267bool insert_data_accounts(SQLite::Database& db, Account account);
268
269
276Account* get_account_by_id(SQLite::Database& db, const std::string& id);
277
278
283void create_table_recovery_codes(SQLite::Database& db);
284
285
293bool store_otp_secret(SQLite::Database& db, const std::string& id, const std::string& secret);
294
295
303bool store_recovery_codes(SQLite::Database& db, const std::string& id, const std::vector<std::string>& codes);
304
305
313bool verify_recovery_code(SQLite::Database& db, const std::string& id, const std::string& code);
314
315
323bool invalidate_recovery_code(SQLite::Database& db, const std::string& id, const std::string& code);
324
325
332std::vector<std::string> get_hashed_recovery_codes(SQLite::Database& db, const std::string& id);
void create_table_recovery_codes(SQLite::Database &db)
recovery_codes 테이블을 생성합니다.
Definition db_management.cpp:579
bool insert_data_verticalLineEquations(SQLite::Database &db, VerticalLineEquation verticalLineEquation)
verticalLineEquations 테이블에 데이터를 삽입합니다.
Definition db_management.cpp:423
void delete_all_data_detections(SQLite::Database &db)
Detections 테이블의 모든 데이터를 삭제합니다.
Definition db_management.cpp:93
void create_table_detections(SQLite::Database &db)
Detections 테이블을 생성합니다.
Definition db_management.cpp:17
bool delete_all_data_baseLines(SQLite::Database &db)
baseLines 테이블의 모든 데이터를 삭제합니다.
Definition db_management.cpp:354
std::vector< CrossLine > select_all_data_lines(SQLite::Database &db)
Lines 테이블의 모든 데이터를 조회합니다.
Definition db_management.cpp:165
VerticalLineEquation select_data_verticalLineEquations(SQLite::Database &db, int index)
verticalLineEquations 테이블에서 특정 인덱스의 데이터를 조회합니다.
Definition db_management.cpp:394
void create_table_baseLines(SQLite::Database &db)
baseLines 테이블을 생성합니다.
Definition db_management.cpp:243
bool store_otp_secret(SQLite::Database &db, const std::string &id, const std::string &secret)
accounts 테이블에 OTP 시크릿을 저장합니다.
Account * select_data_accounts(SQLite::Database &db, std::string id, std::string passwd)
accounts 테이블에서 id와 passwd로 계정 정보를 조회합니다.
bool insert_data_lines(SQLite::Database &db, CrossLine crossLine)
Lines 테이블에 데이터를 삽입합니다.
Definition db_management.cpp:134
std::vector< BaseLine > select_all_data_baseLines(SQLite::Database &db)
baseLines 테이블의 모든 데이터를 조회합니다.
Definition db_management.cpp:262
bool delete_all_data_verticalLineEquations(SQLite::Database &db)
verticalLineEquations 테이블의 모든 데이터를 삭제합니다.
Definition db_management.cpp:452
void create_table_accounts(SQLite::Database &db)
accounts 테이블을 생성합니다.
Definition db_management.cpp:473
std::vector< std::string > get_hashed_recovery_codes(SQLite::Database &db, const std::string &id)
recovery_codes 테이블에서 사용되지 않은 해시 복구 코드 목록을 조회합니다.
Definition db_management.cpp:697
std::vector< Detection > select_data_for_timestamp_range_detections(SQLite::Database &db, std::string startTimestamp, std::string endTimestamp)
주어진 시간 범위 내의 Detection 데이터를 조회합니다.
bool store_recovery_codes(SQLite::Database &db, const std::string &id, const std::vector< std::string > &codes)
recovery_codes 테이블에 복구 코드를 저장합니다.
bool insert_data_accounts(SQLite::Database &db, Account account)
accounts 테이블에 계정 정보를 삽입합니다.
Definition db_management.cpp:526
bool delete_all_data_lines(SQLite::Database &db)
Lines 테이블의 모든 데이터를 삭제합니다.
Definition db_management.cpp:219
bool delete_data_lines(SQLite::Database &db, int indexNum)
Lines 테이블에서 특정 인덱스의 데이터를 삭제합니다.
Definition db_management.cpp:195
bool insert_data_baseLines(SQLite::Database &db, BaseLine baseline)
baseLines 테이블에 데이터를 삽입합니다.
Definition db_management.cpp:292
Account * get_account_by_id(SQLite::Database &db, const std::string &id)
accounts 테이블에서 id로 계정 정보를 조회합니다.
bool insert_data_detections(SQLite::Database &db, Detection detection)
Detections 테이블에 데이터를 삽입합니다.
Definition db_management.cpp:34
void create_table_verticalLineEquations(SQLite::Database &db)
verticalLineEquations 테이블을 생성합니다.
Definition db_management.cpp:378
bool invalidate_recovery_code(SQLite::Database &db, const std::string &id, const std::string &code)
입력한 복구 코드가 일치하면 해당 코드를 used=1로 무효화합니다.
void create_table_lines(SQLite::Database &db)
Lines 테이블을 생성합니다.
Definition db_management.cpp:114
bool verify_recovery_code(SQLite::Database &db, const std::string &id, const std::string &code)
입력한 복구 코드가 DB에 저장된 해시와 일치하는지 검증합니다.
Definition db_management.cpp:641
bool update_data_baseLines(SQLite::Database &db, BaseLine baseline)
baseLines 테이블의 데이터를 수정합니다.
Definition db_management.cpp:325
비밀번호 및 복구 코드 해싱 헤더 파일
사용자 계정 정보를 저장하는 구조체
Definition db_management.hpp:74
std::string id
사용자 ID
Definition db_management.hpp:75
std::string otp_secret
OTP 시크릿
Definition db_management.hpp:77
std::string passwd
비밀번호(해시)
Definition db_management.hpp:76
bool use_otp
OTP 사용 여부
Definition db_management.hpp:78
기준선 좌표 정보를 저장하는 구조체
Definition db_management.hpp:48
int y2
두 번째 점 y
Definition db_management.hpp:55
int matrixNum2
두 번째 매트릭스 번호
Definition db_management.hpp:53
int y1
첫 번째 점 y
Definition db_management.hpp:52
int matrixNum1
첫 번째 매트릭스 번호
Definition db_management.hpp:50
int x2
두 번째 점 x
Definition db_management.hpp:54
int x1
첫 번째 점 x
Definition db_management.hpp:51
int index
기준선 인덱스
Definition db_management.hpp:49
감지선 정보를 저장하는 구조체
Definition db_management.hpp:33
std::string name
라인 이름
Definition db_management.hpp:39
int x1
시작점 x
Definition db_management.hpp:35
int y1
시작점 y
Definition db_management.hpp:36
int index
라인 인덱스
Definition db_management.hpp:34
std::string mode
감지 모드
Definition db_management.hpp:40
int y2
끝점 y
Definition db_management.hpp:38
int x2
끝점 x
Definition db_management.hpp:37
감지 이미지와 타임스탬프를 저장하는 구조체
Definition db_management.hpp:23
std::string timestamp
감지 시각
Definition db_management.hpp:25
std::vector< unsigned char > imageBlob
이미지 데이터 (BLOB)
Definition db_management.hpp:24
복구 코드 정보를 저장하는 구조체
Definition db_management.hpp:86
std::string id
사용자 ID
Definition db_management.hpp:87
std::string code
복구 코드(해시)
Definition db_management.hpp:88
int used
사용 여부(0: 미사용, 1: 사용)
Definition db_management.hpp:89
수직선 방정식(ax+b=0) 정보를 저장하는 구조체
Definition db_management.hpp:63
double b
절편 b
Definition db_management.hpp:66
double a
기울기 a
Definition db_management.hpp:65
int index
수직선 인덱스
Definition db_management.hpp:64