Refactor project structure

This commit is contained in:
2026-03-28 19:56:39 +11:00
parent 1d267378b2
commit 8a2e721058
511 changed files with 59 additions and 48 deletions

View File

@@ -0,0 +1,53 @@
#ifndef FACEDATABASE_H
#define FACEDATABASE_H
#pragma once
#include <iostream>
#include <map>
//#include "ARCFaceRT.h"
#include "sqlite3.h"
#include <vector>
#include "ANSFRCommon.h"
namespace ANSCENTER {
// Structured embedding record for double-buffer reload
struct FaceEmbeddingRecord {
int faceId; // FACE.ID (unique per face)
std::string userId; // FACE.USER (= USER.ID, as string)
std::vector<float> embedding;
};
class FaceDatabase {
public:
FaceDatabase();
~FaceDatabase();
bool Destroy();
bool Initialize(std::string path, int embeddingDim, std::string dataFolder);
int InsertUser(std::string code, std::string userName);
int UpdateUser(int UserId, std::string newUserCode, std::string newUserName);
int InsertFace(int userId, std::string imgPath, float embedding[]);
int DeleteFace(int id);
int DeleteUser(int UserId);
int GetFaceIdsByUser(int userId, std::vector<int>& faceIds);
int GetUserId(std::string code);
int GetUser(int userId, std::string& code, std::string& userName);
int GetUsers(std::vector<int>& ids, std::vector<std::string>& codes, std::vector<std::string>& userNames);
// Fix #12: Batch query — returns users with their face IDs in a single query
int GetUsersWithFaceIds(std::vector<int>& ids, std::vector<std::string>& codes,
std::vector<std::string>& userNames, std::vector<std::vector<int>>& faceIdsByUser);
int GetFaceById(int faceId, int& userId, std::string& imagePath);
std::map<std::string, std::string> GetUserDict();
int GetEmbeddings(ANSFRBase& recognizer);
int GetEmbeddings(std::unique_ptr<ANSFRBase>& recognizer);
// Returns all face embedding records (FACE.ID + USER.ID + embedding) for double-buffer reload
int GetAllEmbeddingRecords(std::vector<FaceEmbeddingRecord>& records);
private:
sqlite3* m_db;
int m_embedding_dim;
std::string _dataFolder;
std::mutex _mutex;
// Fix #10: Logger for database operations
ANSCENTER::SPDLogger& _logger = ANSCENTER::SPDLogger::GetInstance("FaceDB");
int GetNumEmbeddings();
};
}
#endif