This commit is contained in:
anlicheng 2025-05-06 11:12:24 +08:00
parent abb83c4f15
commit f781d5e94b
2 changed files with 22 additions and 4 deletions

View File

@ -194,7 +194,7 @@ handle_info(fetch_next, State = #state{status = ?STATE_ACTIVATED, transport_pid
case micro_data_model:fetch_next() of case micro_data_model:fetch_next() of
error -> error ->
ok; ok;
{ok, #micro_data{device_uuid = DeviceUUID, service_name = ServiceName, at = At, tags = Tags, fields = Fields}} -> {ok, #micro_data{id = Id, device_uuid = DeviceUUID, service_name = ServiceName, at = At, tags = Tags, fields = Fields}} ->
DataPacket = message_pb:encode_msg(#data{ DataPacket = message_pb:encode_msg(#data{
device_uuid = DeviceUUID, device_uuid = DeviceUUID,
service_name = ServiceName, service_name = ServiceName,
@ -203,6 +203,10 @@ handle_info(fetch_next, State = #state{status = ?STATE_ACTIVATED, transport_pid
fields = Fields fields = Fields
}), }),
efka_transport:send(TransportPid, ?METHOD_DATA, DataPacket), efka_transport:send(TransportPid, ?METHOD_DATA, DataPacket),
%%
ok = micro_data_model:delete(Id),
%% %%
fetch_next() fetch_next()
end, end,

View File

@ -15,7 +15,7 @@
%% API %% API
-export([create_table/0]). -export([create_table/0]).
-export([insert/1, get_all_data/0, fetch_next/0]). -export([insert/1, get_all_data/0, fetch_next/0, delete/1]).
create_table() -> create_table() ->
%% id生成器 %% id生成器
@ -23,7 +23,7 @@ create_table() ->
{attributes, record_info(fields, micro_data)}, {attributes, record_info(fields, micro_data)},
{record_name, micro_data}, {record_name, micro_data},
{disc_copies, [node()]}, {disc_copies, [node()]},
{type, bag} {type, ordered_set}
]). ]).
-spec insert(MicroData0 :: #micro_data{}) -> ok | {error, Reason :: any()}. -spec insert(MicroData0 :: #micro_data{}) -> ok | {error, Reason :: any()}.
@ -37,7 +37,21 @@ insert(MicroData0 = #micro_data{}) ->
end. end.
fetch_next() -> fetch_next() ->
ok. case mnesia:dirty_first(?TAB) of
'$end_of_table' ->
error;
Id ->
[Entry] = mnesia:dirty_read(?TAB, Id),
{ok, Entry}
end.
delete(Id) when is_integer(Id) ->
case mnesia:transaction(fun() -> mnesia:delete(?TAB, Id, write) end) of
{'atomic', ok} ->
ok;
{'aborted', Reason} ->
{error, Reason}
end.
-spec get_all_data() -> [#micro_data{}]. -spec get_all_data() -> [#micro_data{}].
get_all_data() -> get_all_data() ->