Okay that's about everything

This commit is contained in:
benbot 2023-10-25 23:19:22 -04:00
parent 023ad47ae4
commit d094ff036f
19 changed files with 236 additions and 79 deletions

View file

@ -1,4 +1,5 @@
defmodule EzcontainerRailway.Railway do
alias EzcontainerRailway.Projects
alias EzcontainerRailway.GraphqlClient
def get_projects(token) do
resp = GraphqlClient.query(
@ -23,12 +24,89 @@ defmodule EzcontainerRailway.Railway do
end
end
def create_service(container, token) when is_map(container) do
def get_services(token) do
project_id = Projects.get_project_by_token(token).project_id
resp = GraphqlClient.query(
"""
query getServices($projectId: String!) {
project(id: $projectId) {
services {
edges {
node {
id
name
}
}
}
}
}
""",
token: token,
variables: %{
projectId: project_id
}
) |> format_response
case resp do
{:error, _} -> resp
{:ok, data} ->
final =
data["project"]["services"]["edges"]
|> Enum.map(&(&1["node"]))
{:ok, final}
end
end
def create_service(source, type, token) do
resp = case type do
"repo" -> create_service_from_repo(source, token)
"image" -> create_service_from_image(source, token)
end
case resp do
{:error, _} -> resp
{:ok, data} -> {:ok, data["serviceCreate"]}
end
end
defp create_service_from_image(source, token) do
project_id = Projects.get_project_by_token(token).project_id
GraphqlClient.query(
"""
mutation createService($projectId: String!, $image: String!, $name: String!){
serviceCreate(input: {projectId: $projectId, name: $name source: { image: $image }}) {
id
}
}
""",
variables: container
)
token: token,
variables: %{
projectId: project_id,
image: source,
name: source
}
) |> format_response
end
defp create_service_from_repo(source, token) do
project_id = Projects.get_project_by_token(token).project_id
GraphqlClient.query(
"""
mutation createService($projectId: String!, $repo: String!, $name: String!){
serviceCreate(input: {projectId: $projectId, name: $name source: { repo: $repo }}) {
id
}
}
""",
token: token,
variables: %{
projectId: project_id,
repo: source,
name: source
}
) |> format_response
end
def create_project(token) do
@ -51,6 +129,21 @@ defmodule EzcontainerRailway.Railway do
end
end
def delete_container(token, service_id) do
GraphqlClient.query(
"""
mutation deleteContainer(id: String!) {
serviceDelete(id: $id)
}
""",
token: token,
variables: %{
id: service_id
}
)
|> format_response
end
def get_user_id(token) do
{:ok, resp} = GraphqlClient.query(
"""