|
@@ -20,16 +20,16 @@ when ?IS_STRING(Task_Id), is_integer(Proc_Id), ((Type =:= static) orelse (Type =
|
|
Time
|
|
Time
|
|
end,
|
|
end,
|
|
% додаємо запис в СУБД
|
|
% додаємо запис в СУБД
|
|
- % postgres("INSERT INTO events_table (task_id, proc_id, time) VALUES ($1, $2, $3)"
|
|
+ 1 = pgs:in_up_del("INSERT INTO events_table (task_id, proc_id, time) VALUES ($1, $2, $3)"
|
|
- % " ON CONFLICT (unique_key) UPDATE SET time = $4", [Task_Id, Proc_Id, Time2, Time2]),
|
|
+ " ON CONFLICT ON CONSTRAINT events_table_ids_uniq DO UPDATE SET time = $4, deleted = NULL",
|
|
|
|
+ [Task_Id, Proc_Id, Time2, Time2]),
|
|
|
|
|
|
ok.
|
|
ok.
|
|
|
|
|
|
delete_task(Task_Id, Proc_Id)
|
|
delete_task(Task_Id, Proc_Id)
|
|
when ?IS_STRING(Task_Id), is_integer(Proc_Id) ->
|
|
when ?IS_STRING(Task_Id), is_integer(Proc_Id) ->
|
|
% позначаємо запис видаленим в СУБД
|
|
% позначаємо запис видаленим в СУБД
|
|
- % postgres("UPDATE events_table SET deleted = 1"
|
|
+ 1 = pgs:in_up_del("UPDATE events_table SET deleted = 1 WHERE task_id = $1 AND proc_id = $2", [Task_Id, Proc_Id]),
|
|
- % " WHERE task_id = $1, proc_id = $2 LIMIT 1", [Task_Id, Proc_Id]),
|
|
|
|
|
|
|
|
% видаляємо зі State (якщо є)
|
|
% видаляємо зі State (якщо є)
|
|
gen_server:cast(?MODULE, {delete_task, {Task_Id, Proc_Id}}),
|
|
gen_server:cast(?MODULE, {delete_task, {Task_Id, Proc_Id}}),
|
|
@@ -51,10 +51,10 @@ handle_call(_Req, _From, State) ->
|
|
{reply, not_handled, State}.
|
|
{reply, not_handled, State}.
|
|
|
|
|
|
|
|
|
|
-handle_cast({delete_task, {Task_Id, Proc_Id}=V}, State) ->
|
|
+handle_cast({delete_task, {_Task_Id, _Proc_Id}=V}, State) ->
|
|
% видаляємо зі State (якщо є)
|
|
% видаляємо зі State (якщо є)
|
|
ets:delete(events_table, V),
|
|
ets:delete(events_table, V),
|
|
- io:format("deleted: ~p ~p~n", [Task_Id, Proc_Id]),
|
|
+ %io:format("deleted: ~p ~p~n", [Task_Id, Proc_Id]),
|
|
{noreply, State};
|
|
{noreply, State};
|
|
|
|
|
|
|
|
|
|
@@ -72,12 +72,13 @@ handle_info(check_time_process, State) ->
|
|
|
|
|
|
lists:foldl(fun({{Task_Id0, Proc_Id0}=V, _Time0}, ok) ->
|
|
lists:foldl(fun({{Task_Id0, Proc_Id0}=V, _Time0}, ok) ->
|
|
% send_to_rabbitmq({call_timer, Proc_Id0, Task_Id0}),
|
|
% send_to_rabbitmq({call_timer, Proc_Id0, Task_Id0}),
|
|
|
|
+
|
|
% позначаємо запис видаленим в СУБД
|
|
% позначаємо запис видаленим в СУБД
|
|
- % postgres("UPDATE events_table SET deleted = 1"
|
|
+ 1 = pgs:in_up_del("UPDATE events_table SET deleted = 1"
|
|
- % " WHERE task_id = $1, proc_id = $2 LIMIT 1", [Task_Id0, Proc_Id0]),
|
|
+ " WHERE task_id = $1, proc_id = $2 LIMIT 1", [Task_Id0, Proc_Id0]),
|
|
|
|
|
|
ets:delete(events_table, V),
|
|
ets:delete(events_table, V),
|
|
- io:format("tick: ~p ~p~n", [Task_Id0, Proc_Id0]),
|
|
+ %io:format("tick: ~p ~p~n", [Task_Id0, Proc_Id0]),
|
|
ok
|
|
ok
|
|
end, ok, L),
|
|
end, ok, L),
|
|
|
|
|
|
@@ -99,14 +100,14 @@ handle_info(load_data_from_db, State) ->
|
|
N0 = proplists:get_value('size', ets:info(events_table)),
|
|
N0 = proplists:get_value('size', ets:info(events_table)),
|
|
N = ?N_COUNT - N0,
|
|
N = ?N_COUNT - N0,
|
|
% отримуємо записи з СУБД
|
|
% отримуємо записи з СУБД
|
|
- % L = postgres("SELECT task_id, proc_id, time FROM events_table"
|
|
+ L = pgs:select("SELECT task_id, proc_id, time FROM events_table"
|
|
- % " WHERE deleted IS NULL ORDER BY time DESC LIMIT $1", [N]),
|
|
+ " WHERE deleted IS NULL ORDER BY time DESC LIMIT $1", [N]),
|
|
|
|
|
|
% додаємо отримані записи для обробки в ets
|
|
% додаємо отримані записи для обробки в ets
|
|
- %lists:foldl(fun({{_Task_Id0, _Proc_Id0}, _Time0}=V, ok) ->
|
|
+ lists:foldl(fun({Task_Id0, Proc_Id0, Time0}, ok) ->
|
|
- % ets:insert(events_table, V),
|
|
+ ets:insert(events_table, {{Task_Id0, Proc_Id0}, Time0}),
|
|
- % ok
|
|
+ ok
|
|
- % end, ok, L),
|
|
+ end, ok, L),
|
|
|
|
|
|
|
|
|
|
%erlang:send_after(10, self(), check_time_process),
|
|
%erlang:send_after(10, self(), check_time_process),
|