%%%------------------------------------------------------------------- %%% @author bsk %%% @copyright (C) 2018, %%% @doc %%% %%% @end %%% Created : 12. 十一月 2018 下午5:35 %%%------------------------------------------------------------------- -module(clusterInfo). -author("bsk"). -record(cluster_info, {cluster_id, cluster_name, create_time, update_time, create_by}). -include_lib("stdlib/include/ms_transform.hrl"). -include_lib("stdlib/include/qlc.hrl"). %% API %%% 创建,增,删,改,查 -export([create_ClusterInfoTable/2, add_ClusterInfo/2, del_ClusterInfo/1, findClusterInfo/1, findClusterInfo/2]). %%% 集群信息,数据格式转换 -export([clusterInfoList2Maps/1]). %%% 创建集群信息表 %%% 应仅在集群初始化的时候调用一次 create_ClusterInfoTable(Nodes, TableName) -> Ret = mnesia:create_table(TableName, [{disc_copies, Nodes}, {attributes, record_info(fields, cluster_info)} ]), io:format("create_ClusterInfoTable Ret=~p~n", [Ret]), %% todo %% syncTool:changeTableConfig(Nodes, TableName), %% mnesia:change_table_copy_type(TableName, node(), disc_copies), Ret. %%% 增加集群信息 %%% %%% @CluId 集群id %%% @CluName 集群名称 add_ClusterInfo(CluId, CluName) -> CreateTime = syncTool:getTimeStr(), UpdateTime = syncTool:getTimeStr(), CreateUser = node(), F = fun() -> mnesia:write(#cluster_info{cluster_id = CluId, cluster_name = CluName, create_time = CreateTime, update_time = UpdateTime, create_by = CreateUser}) end, mnesia:activity(transaction, F). %%% 物理删除 del_ClusterInfo(CluId) -> mnesia:transaction( fun() -> mnesia:delete({cluster_info, CluId}) end). %%% 查询集群信息 %%% @TableName 表名 %%% @Expertise 约束条件的值 findClusterInfo(TableName, Expertise) -> F = fun() -> qlc:eval(qlc:q([{CluId, CluName, CreateTime, UpdateTime, CreateUser} || #cluster_info{cluster_id = CluId, cluster_name = CluName, create_time = CreateTime, update_time = UpdateTime, create_by = CreateUser} <- mnesia:table(TableName), CluId =:= Expertise])) end, mnesia:activity(transaction, F). findClusterInfo(TableName) -> F = fun() -> qlc:eval(qlc:q([{CluId, CluName, CreateTime, UpdateTime, CreateUser} || #cluster_info{cluster_id = CluId, cluster_name = CluName, create_time = CreateTime, update_time = UpdateTime, create_by = CreateUser} <- mnesia:table(TableName)])) end, mnesia:activity(transaction, F). %%% 集群信息list转map转list clusterInfoList2Maps([]) -> []; clusterInfoList2Maps(_ExpertiseList = [Info | T]) -> TemMaps = #{"cluster_id" => element(1, Info), "cluster_name" => element(2, Info), "create_time" => element(3, Info), "update_time" => element(4, Info), "create_by" => element(5, Info) % -record(cluster_info, {cluster_id, cluster_name, create_time, update_time, create_by}). }, [maps:to_list(TemMaps) | clusterInfoList2Maps(T)].