1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
| %%%-------------------------------------------------------------------
| %%% @author panse
| %%% @copyright (C) 2018, <COMPANY>
| %%% @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).
|
|