Skip to main content

src/erlang_adk_session.erl

-module(erlang_adk_session).

-export([init/0, save/2, load/1, delete/1]).

-define(TABLE, adk_sessions).

%% @doc Initialize the ETS table. Should be called by the application startup.
init() ->
    ets:new(?TABLE, [set, public, named_table, {read_concurrency, true}, {write_concurrency, true}]).

%% @doc Save memory list for a given SessionId
save(SessionId, Memory) ->
    ets:insert(?TABLE, {SessionId, Memory}),
    ok.

%% @doc Load memory list for a given SessionId. Returns empty list if not found.
load(SessionId) ->
    case ets:lookup(?TABLE, SessionId) of
        [{SessionId, Memory}] -> Memory;
        [] -> []
    end.

%% @doc Delete a session
delete(SessionId) ->
    ets:delete(?TABLE, SessionId),
    ok.