diff --git a/lib/ezcontainer_railway/railway.ex b/lib/ezcontainer_railway/railway.ex index 57c6c32..d810fc5 100644 --- a/lib/ezcontainer_railway/railway.ex +++ b/lib/ezcontainer_railway/railway.ex @@ -35,6 +35,21 @@ defmodule EzcontainerRailway.Railway do node { id name + serviceInstances { + edges { + node { + upstreamUrl + domains { + customDomains { + domain + } + serviceDomains { + domain + } + } + } + } + } } } } @@ -129,10 +144,10 @@ defmodule EzcontainerRailway.Railway do end end - def delete_container(token, service_id) do + def delete_container(service_id, token) do GraphqlClient.query( """ - mutation deleteContainer(id: String!) { + mutation deleteContainer($id: String!) { serviceDelete(id: $id) } """, diff --git a/lib/ezcontainer_railway_web/live/container_create_live.ex b/lib/ezcontainer_railway_web/live/container_create_live.ex index d0f317c..e1a22fc 100644 --- a/lib/ezcontainer_railway_web/live/container_create_live.ex +++ b/lib/ezcontainer_railway_web/live/container_create_live.ex @@ -60,6 +60,6 @@ defmodule EzcontainerRailwayWeb.ContainerCreateLive do socket.assigns.session["railway_token"] ) - {:noreply, socket |> push_redirect('/containers')} + {:noreply, socket |> put_flash(:info, "container deplying") |> push_redirect(to: "/containers")} end end diff --git a/lib/ezcontainer_railway_web/live/containers_live.ex b/lib/ezcontainer_railway_web/live/containers_live.ex new file mode 100644 index 0000000..33be262 --- /dev/null +++ b/lib/ezcontainer_railway_web/live/containers_live.ex @@ -0,0 +1,43 @@ +defmodule EzcontainerRailwayWeb.ContainersLive do + use Phoenix.LiveView + alias EzcontainerRailway.Railway + use EzcontainerRailwayWeb, :live_view + + def render(assigns) do + ~H""" +
+ <%= for service <- @services do %> +
+
+

<%= service["name"] %>

+
+ +
+
+
+ <% end %> +
+ """ + end + + def mount(_params, session, socket) do + {:ok, services} = Railway.get_services(session["railway_token"]) + IO.inspect services + + {:ok, socket |> assign(session: session, services: services)} + end + + def handle_info(:refresh, socket) do + {:ok, services} = Railway.get_services(socket.assigns.session["railway_token"]) + + {:noreply, socket |> assign(services: services)} + end + + def handle_event("delete", data, socket) do + {:ok, services} = Railway.delete_container(data["project_id"], socket.assigns.session["railway_token"]) + + send(self(), :refresh) + + {:noreply, socket} + end +end diff --git a/lib/ezcontainer_railway_web/router.ex b/lib/ezcontainer_railway_web/router.ex index bfbff2f..355d060 100644 --- a/lib/ezcontainer_railway_web/router.ex +++ b/lib/ezcontainer_railway_web/router.ex @@ -36,7 +36,8 @@ defmodule EzcontainerRailwayWeb.Router do pipe_through :ensure_token live "/containers/create", ContainerCreateLive - resources("/containers", ContainerController, only: [:index, :create, :show]) + live "/containers", ContainersLive + resources("/containers", ContainerController, only: [:create, :show]) end # Other scopes may use custom stacks.