defmodule KuzuPyPortEx.Proxy do use GenServer use Export.Python # optional, omit if adding this to a supervision tree def start_link(_) do GenServer.start_link(__MODULE__, %{}, name: __MODULE__) end def execute(path, query, parameters \\ %{}) do GenServer.call(__MODULE__, {:execute, path, query, parameters}) end # server def init(state) do priv_path = Path.join(:code.priv_dir(:kuzu_pyport_ex), "python") {:ok, py} = Python.start_link(python_path: priv_path) {:ok, Map.put(state, :py, py)} end def handle_call({:execute, path, query, parameters}, _from, %{py: py} = state) do result = Python.call(py, "kuzu_proxy", "execute", [path, query, parameters]) {:reply, result, state} end def terminate(_reason, %{py: py} = _state) do Python.stop(py) :ok end end