sql_conf
简介
使用sqlite进行配置加载和打包 注意事项: table_name不可重复,相当于配置表的表名 数组需要先加载到缓存后才可以通过下标get 支持服务器使用, 服务器启动前载入db配置,并且将所有配置缓存起来 TODO: 记录table拆分到db的映射,提供一个拆分配置
组件接口
sql_conf.gs
样例
public void main()
{
// 示例先自行构建db,实际该步骤应放在打包阶段
build_sql_conf();
// 是否自动根据etc目录创建db,会执行脏数据检查,只有改动配置表更新
bool rebuild_sqlite = false;
// 初始化sql_conf
sql_conf.setup({"build":rebuild_sqlite});
// 所有从etc读取配置表的操作,setup后会被sql_conf劫持,优先尝试从db读取
write("get row data:\n", etc.get_table_value("sample_table", 10001), "\n");
write("get table datas:\n", etc.__get_table("sample_table"), "\n");
}
public void build_sql_conf()
{
// 项目可根据自己需求处理打包逻辑,以下为几种示例打包
// 0.将etc下所有配置打包到一个db中,读取方式使用etc默认的NormalTableData
sql_conf.create_db_from_etc();
// 1. 将etc下指定目录配置打包到指定db,读取方式使用etc默认的NormalTableData
// sql_conf.create_db_from_paths("/etc/", "/etc/__SQL_CONF__.db");
// 2. 将etc下指定目录配置打包到指定db,自定义重载
// sql_conf.create_db_from_paths("/etc/", "/etc/__SQL_CONF__.db", true, restore_file_data);
// 3. 已有数据,将指定配置表打入指定db中
map sample_data = {
10001 : {"id":10001, "key_0" : 10, "key_1":11},
10002 : {"id":10002, "key_0" : 110, "key_1":111}
};
sql_conf.create_table("/etc/__SQL_CONF__.db", "sample_table", sample_data, "etc/sample_data.xlsx");
}
mixed restore_file_data(string file_path)
{
// 示例读取,实际可根据需求自定义加载方式
string table_name = directory.pure_name(file_path);
mixed data = etc.__get_table(table_name);
return data;
}
main();