Current section
Files
Jump to
Current section
Files
lib/phantom/cache.ex
defmodule Phantom.Cache do
@moduledoc false
def register(module) do
case Code.ensure_compiled(module) do
{:module, module} ->
info = module.__phantom__(:info)
resource_templates = Map.get(info, :resource_templates, [])
:persistent_term.put({Phantom, module, :initialized}, true)
:persistent_term.put({Phantom, module, :tools}, Map.get(info, :tools, []))
:persistent_term.put({Phantom, module, :prompts}, Map.get(info, :prompts, []))
:persistent_term.put({Phantom, module, :resource_templates}, resource_templates)
info
_ ->
{:error, :router_not_found}
end
end
def get(session, module, type) do
available = :persistent_term.get({Phantom, module, type}, [])
case Map.get(session, type) do
nil -> available
authorized -> Enum.filter(available, &(&1.name in authorized))
end
end
def initialized?(router) do
:persistent_term.get({__MODULE__, router, :initialized}, false) == true
end
end