%%%------------------------------------------------------------------- %%% @author panse %%% @copyright (C) 2018, %%% @doc %%% %%% @end %%% Created : 06. 八月 2018 10:28 %%%------------------------------------------------------------------- -module(tableType). -author("panse"). %%% 黑白名单 -record(tableType, {tableName, id, bwType, create_time, update_time, create_by}). -include_lib("stdlib/include/ms_transform.hrl"). -include_lib("stdlib/include/qlc.hrl"). %% API -compile(export_all). %%% 创建 黑白名单管理表 %%% 应仅在集群初始化的时候调用一次 %%% 默认值为tableType create_tableType(Nodes, TableName) -> %%tableType Ret = mnesia:create_table(TableName, [{disc_copies, Nodes}, {attributes, record_info(fields, tableType)} %% ,{index, [#device_info.id]} ]), io:format("create_tableType Ret=~p~n", [Ret]), %% changeTableConfig(nodes(), TableName), mnesia:change_table_copy_type(TableName, node(), disc_copies), Ret. %%% 设置 add_tableType(Uuid, TableName, TabBWType) -> if Uuid == "" -> ID = syncTool:getUUIDStr(); true -> ID = Uuid end, CreateTime = syncTool:getTimeStr(), UpdateTime = syncTool:getTimeStr(), CreateUser = node(), F = fun() -> mnesia:write(#tableType{tableName = TableName, id = ID, bwType = TabBWType, create_time = CreateTime, update_time = UpdateTime, create_by = CreateUser}) end, Ret = mnesia:activity(transaction, F), if Ret == ok -> Result = ID; true -> Result = "" end, Result. %%% 删除表后应删除记录 %%% 物理删除 del_TableTypeInfo(TableName) -> mnesia:transaction( fun() -> mnesia:delete({tableType, TableName}) end). %%% 查找所有信息 findAllTableTypeInfo(TableName) -> %% Q = qlc:q([[E#y_account.id, E#y_account.account] || E <- mnesia:table(y_account)]), %%qlc:e(Q) F = fun() -> qlc:e(qlc:q([{TabName, ID, TabBWType, CreateTime, UpdateTime, CreateUser} || #tableType{tableName = TabName, id = ID, bwType = TabBWType, create_time = CreateTime, update_time = UpdateTime, create_by = CreateUser} <- mnesia:table(TableName)])) end, mnesia:activity(transaction, F). tableTypeformat2Mat([]) -> []; tableTypeformat2Mat(_ExpertiseList = [OnlineNodes | T]) -> OnlineNode = OnlineNodes, TemMaps = #{"tableName" => element(1, OnlineNode), "uuid" => element(2, OnlineNode), "bwType" => element(3, OnlineNode), "create_time" => element(4, OnlineNode), "update_time" => element(5, OnlineNode), "create_by" => element(6, OnlineNode) }, io:format("~p~n~n~n", [TemMaps]), [maps:to_list(TemMaps) | tableTypeformat2Mat(T)]. %%% 查找信息 findTableTypeInfo(TableName, Expertise) -> F = fun() -> qlc:e(qlc:q([{TabName, ID, TabBWType, CreateTime, UpdateTime, CreateUser} || #tableType{tableName = TabName, id = ID, bwType = TabBWType, create_time = CreateTime, update_time = UpdateTime, create_by = CreateUser} <- mnesia:table(TableName), TabName =:= Expertise])) end, mnesia:activity(transaction, F).