defmodule EzcontainerRailway.Railway do alias EzcontainerRailway.GraphqlClient def get_projects(token) do resp = GraphqlClient.query( """ query { projects { edges { node { id name } } } } """, token: token ) |> format_response case resp do {:error, _} -> resp {:ok, data} -> {:ok, data["projects"]["edges"]} end end def create_service(container, token) when is_map(container) do GraphqlClient.query( """ """, variables: container ) end def create_project(token) do resp = GraphqlClient.query( """ mutation { projectCreate(input: {}) { id name } } """, token: token ) |> format_response case resp do {:error, _} -> resp {:ok, data} -> {:ok, data["projectCreate"]["id"]} end end def get_user_id(token) do {:ok, resp} = GraphqlClient.query( """ query { me { id } } """, token: token ) |> format_response {:ok, resp["me"]["id"]} end def has_errors?(resp) do has_errors_in_array?(resp["errors"]) end defp format_response(resp) when is_map(resp) do if has_errors?(resp.body) do {:error, resp.body["errors"]} else {:ok, resp.body["data"]} end end defp has_errors_in_array?([_|_]), do: true defp has_errors_in_array?(_), do: false end