dbase
简介
提供一个通用的基础数据组件FDbase
主要用法是component pkg.dbase.FDbase;
组件接口
dbase.gs
函数原型 | 函数作用 |
---|---|
void update_dbase(object ob, string d, mixed key, mixed value, mixed op = nil) | 更新目标对象的常驻数据 |
FDbase.gs
一个通用的基础数据组件
持有的数据分为两类:常驻数据和临时数据
常驻数据的操作接口比临时数据的操作接口丰富
接口函数的几点说明:
-
带有"raw_"开头的方法:直接对元数据(_dbase/_temp_dbase)进行操作
-
带有"temp"的方法:对临时数据进行操作
-
不带有"temp"的方法:对常驻数据进行操作
从操作上来分,大概如下:
-
对元数据(_dbase/_temp_dbase)进行增删查改操作的方法
-
对数据进行增啥查改操作的方法
-
对数据指定路径进行增删查改的方法
-
对数据指定词典/数组进行增删查改的方法
样例
public void pkg_sample()
{
object ob = new_object(FDbase);
defer ob.close();
dbase.update_dbase(ob, nil, "X", {});
gtest.test_equal(ob.query("X"), {});
dbase.update_dbase(ob, "X", "a", 1);
gtest.test_equal(ob.dict_query("X", "a"), 1);
dbase.update_dbase(ob, "X", "a", 2);
gtest.test_equal(ob.dict_query("X", "a"), 2);
dbase.update_dbase(ob, "X", "a", nil);
gtest.test_equal(ob.dict_query("X", "a"), nil);
dbase.update_dbase(ob, nil, "X", nil);
gtest.test_equal(ob.query("X"), nil);
dbase.update_dbase(ob, nil, "Z", []);
gtest.test_equal(ob.query("Z"), []);
dbase.update_dbase(ob, "Z", 0, 1);
dbase.update_dbase(ob, "Z", 0, 2);
gtest.test_equal(ob.query("Z"), [ 2, 1 ]);
dbase.update_dbase(ob, "Z", 0, nil);
gtest.test_equal(ob.query("Z"), [ 1 ]);
dbase.update_dbase(ob, "Z", 0, nil);
gtest.test_equal(ob.query("Z"), []);
dbase.update_dbase(ob, nil, "Z", nil);
gtest.test_equal(ob.query("Z"), nil);
map dbase = ob.query_entire_dbase();
gtest.test_equal(dbase.length() > 0, false);
ob.raw_query_with_create("raw_a", 100);
gtest.test_equal(ob.raw_query("raw_a"), 100);
gtest.test_equal(ob.raw_query("a"), nil);
gtest.test_equal(ob.raw_contains_key("a"), false);
ob.raw_set("a", 1);
gtest.test_equal(ob.raw_contains_key("a"), true);
gtest.test_equal(ob.raw_query("a"), 1);
ob.raw_add("a", 1);
gtest.test_equal(ob.raw_query("a"), 2);
ob.raw_delete("a");
gtest.test_equal(ob.raw_query("a"), nil);
gtest.test_equal(ob.raw_contains_key("a"), false);
gtest.test_equal(ob.query("b"), nil);
gtest.test_equal(ob.contains_key("b"), false);
ob.set("b", 1);
gtest.test_equal(ob.contains_key("b"), true);
gtest.test_equal(ob.query("b"), 1);
ob.add("b", 1);
gtest.test_equal(ob.query("b"), 2);
ob.delete("b");
gtest.test_equal(ob.query("b"), nil);
gtest.test_equal(ob.contains_key("b"), false);
gtest.test_equal(ob.query_temp("c"), nil);
gtest.test_equal(ob.contains_temp_key("c"), false);
ob.set_temp("c", 1);
gtest.test_equal(ob.contains_temp_key("c"), true);
gtest.test_equal(ob.query_temp("c"), 1);
ob.add_temp("c", 1);
gtest.test_equal(ob.query_temp("c"), 2);
ob.delete_temp("c");
gtest.test_equal(ob.query_temp("c"), nil);
gtest.test_equal(ob.contains_temp_key("c"), false);
gtest.test_equal(ob.raw_query_temp("d"), nil);
gtest.test_equal(ob.raw_contains_temp_key("d"), false);
ob.raw_set_temp("d", 1);
gtest.test_equal(ob.raw_contains_temp_key("d"), true);
gtest.test_equal(ob.raw_query_temp("d"), 1);
ob.raw_add_temp("d", 1);
gtest.test_equal(ob.raw_query_temp("d"), 2);
ob.raw_delete_temp("d");
gtest.test_equal(ob.raw_query_temp("d"), nil);
gtest.test_equal(ob.raw_contains_temp_key("d"), false);
// dict op
map raw_dict = ob.raw_query_with_create("dict", {});
gtest.test_equal(raw_dict, {});
gtest.test_equal(ob.dict_query("dict", "a"), nil);
ob.dict_set("dict", "a", 1);
gtest.test_equal(raw_dict, { "a" : 1 });
gtest.test_equal(ob.dict_query("dict", "a"), 1);
ob.dict_add("dict", "a", 1);
gtest.test_equal(raw_dict, { "a" : 2 });
gtest.test_equal(ob.dict_query("dict", "a"), 2);
ob.dict_delete("dict", "a");
gtest.test_equal(raw_dict, {});
gtest.test_equal(ob.dict_query("dict", "a"), nil);
// list op
array raw_list = ob.raw_query_with_create("list", []);
ob.list_push_back("list", 5);
gtest.test_equal(raw_list, [ 5 ]);
ob.list_insert("list", 0, 1);
gtest.test_equal(raw_list, [ 1, 5 ]);
ob.list_insert("list", 1, 2);
gtest.test_equal(raw_list, [ 1, 2, 5 ]);
ob.list_insert("list", 2, 3);
gtest.test_equal(raw_list, [ 1, 2, 3, 5 ]);
ob.list_insert("list", 3, 4);
gtest.test_equal(raw_list, [ 1, 2, 3, 4, 5 ]);
// temp dict op
map raw_temp_dict = ob.raw_query_temp_with_create("dict", {});
gtest.test_equal(raw_temp_dict, {});
gtest.test_equal(ob.dict_query_temp("dict", "a"), nil);
ob.dict_set_temp("dict", "a", 1);
gtest.test_equal(raw_temp_dict, { "a" : 1 });
gtest.test_equal(ob.dict_query_temp("dict", "a"), 1);
ob.dict_add_temp("dict", "a", 1);
gtest.test_equal(raw_temp_dict, { "a" : 2 });
gtest.test_equal(ob.dict_query_temp("dict", "a"), 2);
ob.dict_delete_temp("dict", "a");
gtest.test_equal(raw_temp_dict, {});
gtest.test_equal(ob.dict_query_temp("dict", "a"), nil);
// temp list op
array raw_temp_list = ob.raw_query_temp_with_create("list", []);
ob.list_push_back_temp("list", 5);
gtest.test_equal(raw_temp_list, [ 5 ]);
ob.list_insert_temp("list", 0, 1);
gtest.test_equal(raw_temp_list, [ 1, 5 ]);
ob.list_insert_temp("list", 1, 2);
gtest.test_equal(raw_temp_list, [ 1, 2, 5 ]);
ob.list_insert_temp("list", 2, 3);
gtest.test_equal(raw_temp_list, [ 1, 2, 3, 5 ]);
ob.list_insert_temp("list", 3, 4);
gtest.test_equal(raw_temp_list, [ 1, 2, 3, 4, 5 ]);
}