ezcontainer_example/lib/ezcontainer_railway/railway.ex

85 lines
1.6 KiB
Elixir
Raw Normal View History

2023-10-25 03:58:10 -04:00
defmodule EzcontainerRailway.Railway do
alias EzcontainerRailway.GraphqlClient
def get_projects(token) do
resp = GraphqlClient.query(
2023-10-25 03:58:10 -04:00
"""
query {
projects {
edges {
node {
id
2023-10-25 04:48:36 -04:00
name
2023-10-25 03:58:10 -04:00
}
}
}
}
""",
token: token
) |> format_response
case resp do
{:error, _} -> resp
{:ok, data} -> {:ok, data["projects"]["edges"]}
end
2023-10-25 03:58:10 -04:00
end
2023-10-25 04:48:36 -04:00
def create_service(container, token) when is_map(container) do
GraphqlClient.query(
"""
""",
variables: container
)
end
def create_project(token) do
resp = GraphqlClient.query(
2023-10-25 04:48:36 -04:00
"""
mutation {
projectCreate(input: {}) {
2023-10-25 04:48:36 -04:00
id
name
}
}
""",
token: token
2023-10-25 04:48:36 -04:00
)
|> format_response
case resp do
{:error, _} -> resp
{:ok, data} -> {:ok, data["projectCreate"]["id"]}
end
2023-10-25 04:48:36 -04:00
end
def get_user_id(token) do
{:ok, resp} = GraphqlClient.query(
"""
query {
me {
id
}
}
""",
token: token
)
|> format_response
2023-10-25 04:48:36 -04:00
{:ok, resp["me"]["id"]}
2023-10-25 04:48:36 -04:00
end
def has_errors?(resp) do
2023-10-25 04:48:36 -04:00
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"]}
2023-10-25 04:48:36 -04:00
else
{:ok, resp.body["data"]}
2023-10-25 04:48:36 -04:00
end
end
defp has_errors_in_array?([_|_]), do: true
defp has_errors_in_array?(_), do: false
2023-10-25 03:58:10 -04:00
end