fbx_to_3dtiles/cpp_src/include/db_ops.h

82 lines
2.5 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <tools.h>
using namespace std;
/**
* @brief 创建并打开SQLite数据库连接
* @param db_path 数据库文件路径
* @param overwrite_file 若为true则删除已有文件后创建新数据库
* @return 成功返回sqlite3句柄失败返回NULL
*/
sqlite3* create_db(const char* db_path, bool overwrite_file);
/**
* @brief 在指定数据库中创建必要表结构
* @param db 已打开的SQLite数据库句柄
* @note 需确保db参数有效且已成功打开
*/
void create_tables(sqlite3* db);
///////////////////////////
//////// 数据保存 /////////
///////////////////////////
/**
* @brief 将网格数据元信息保存到数据库表
* @param ctx FTT上下文句柄包含日志/错误处理等公共资源
* @param db 已打开的SQLite数据库连接
* @param name 网格名称(唯一标识)
* @param vertex_count 顶点数量
* @param index_count 索引数量
* @param fbx_id 关联的FBX文件ID
* @return 成功返回SQLITE_OK失败返回SQLite错误码(<0)
* @note 1. 参数需确保有效ctx/db非NULLname/fbx_id非空
* 2. 内部自动处理事务重复name会触发唯一键冲突
*/
int save_mesh_to_table(FttContext* ctx, sqlite3 *db, uint id, uint pid, const std::string &name, int vertex_count, int index_count, const std::string &fbx_id);
/**
* @brief 保存网格顶点数据到上下文
* @param ctx FttContext上下文指针用于管理网格数据存储
* @param mesh_id 目标网格的唯一标识符
* @param vertices 顶点数据容器存储V3类型的顶点坐标集合
* @return 成功返回0失败返回非0错误码
*/
int save_mesh_vertices(FttContext* ctx, uint mesh_id, std::vector<V3> vertices);
/**
* @brief 保存网格索引数据到上下文
* @param ctx FttContext上下文指针用于管理网格数据存储
* @param mesh_id 目标网格的唯一标识符需与顶点数据的mesh_id对应
* @param indices 索引数据容器存储unsigned int类型的顶点索引集合
* @return 成功返回0失败返回非0错误码
*/
int save_mesh_indices(FttContext* ctx, uint mesh_id, std::vector<unsigned int> indices);
/*
id INTEGER PRIMARY KEY,
pid INTEGER,
name TEXT NOT NULL,
t_x REAL,
t_y REAL,
t_z REAL,
r_x REAL,
r_y REAL,
r_z REAL,
s_x REAL,
s_y REAL,
s_z REAL,
properties TEXT
*/
int save_nodes(FttContext* ctx, uint id, uint pid,
const std::string &name,
double t_x,
double t_y,
double t_z,
double r_x,
double r_y,
double r_z,
double s_x,
double s_y,
double s_z,
const std::string &properties
);