Merge pull request #20 from team-alembic/feat/reset-inactivity

feat: resets genserver inactivity with :keep_alive info message
This commit is contained in:
Chris Hopkins 2022-12-13 16:12:01 +09:00 committed by GitHub
commit 31cb694267
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 0 deletions

View file

@ -122,6 +122,10 @@ defmodule AshGenServer.Server do
end
end
def handle_info(:keep_alive, state) do
{:noreply, maybe_set_inactivity_timer(state)}
end
defp primary_key_from_resource_and_changeset(resource, changeset) do
resource
|> Resource.Info.primary_key()

View file

@ -38,4 +38,17 @@ defmodule AshGenServer.ServerTest do
refute state.record.nickname
end
end
describe "handle_info/3" do
test "when send :keep_alive to server resets inactivity timer" do
changeset =
TimeTravel.Character
|> Changeset.for_create(:create, %{name: "Biff Tannen", current_year: 2015})
{:ok, old_state} = Server.init([TimeTravel.Character, changeset])
{:noreply, new_state} = Server.handle_info(:keep_alive, old_state)
refute old_state.inactivity_timer == new_state.inactivity_timer
end
end
end

View file

@ -37,4 +37,8 @@ defmodule TimeTravel.Character do
create_timestamp(:created_at)
update_timestamp(:updated_at)
end
gen_server do
inactivity_timeout(:timer.minutes(1))
end
end