defmodule PhaseDB.Server.Protocol do alias PhaseDB.{Result, Session, Request} def init_message do Result.new( fields: ~w|server_version engine_version|, rows: [ [PhaseDB.Server.version, PhaseDB.version] ] ) end def handle(json, session_pid) when is_binary(json) do handle Request.from_json(json), session_pid end def handle %Request{id: id, query: query}, session_pid do response = session_pid |> Session.query(query) %{response | id: id} |> Poison.encode! end def error(message), do: Result.error(message) end