From c4f6cbab20b0b1d08755073d93365e5bd00dc755 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 6 Nov 2018 11:57:09 +0100 Subject: Shard deletion ; update README and TODO --- shardweb/lib/controllers/directory_controller.ex | 6 +----- shardweb/lib/controllers/page_controller.ex | 8 ++++++++ shardweb/lib/router.ex | 1 + shardweb/lib/templates/page/shard_list.html.eex | 15 ++++++++++++++- 4 files changed, 24 insertions(+), 6 deletions(-) (limited to 'shardweb/lib') diff --git a/shardweb/lib/controllers/directory_controller.ex b/shardweb/lib/controllers/directory_controller.ex index d1b7136..ecb9c97 100644 --- a/shardweb/lib/controllers/directory_controller.ex +++ b/shardweb/lib/controllers/directory_controller.ex @@ -9,7 +9,7 @@ defmodule ShardWeb.DirectoryController do view(conn, false, args) end - def view(conn, public, %{"owner" => owner, "name" => name}=args) do + def view(conn, public, %{"owner" => owner, "name" => name}) do owner = Base.decode16! owner manifest = %SApp.Directory.Manifest{public: public, owner: owner, name: name} shard = SData.term_hash manifest @@ -28,7 +28,6 @@ defmodule ShardWeb.DirectoryController do dir_public = (dir_public == "true") manifest = %SApp.Directory.Manifest{public: dir_public, owner: conn.assigns.pk, name: dir_name} - shard = SData.term_hash manifest pid = Shard.Manager.find_or_start manifest item_manifest = ShardURI.to_manifest(add_uri) @@ -41,7 +40,6 @@ defmodule ShardWeb.DirectoryController do dir_public = (dir_public == "true") manifest = %SApp.Directory.Manifest{public: dir_public, owner: conn.assigns.pk, name: dir_name} - shard = SData.term_hash manifest pid = Shard.Manager.find_or_start manifest SApp.Directory.rm_item(pid, rm_name) @@ -54,7 +52,6 @@ defmodule ShardWeb.DirectoryController do item_stored = (item_stored == "true") manifest = %SApp.Directory.Manifest{public: dir_public, owner: conn.assigns.pk, name: dir_name} - shard = SData.term_hash manifest pid = Shard.Manager.find_or_start manifest SApp.Directory.set_stored(pid, item_name, item_stored) @@ -68,7 +65,6 @@ defmodule ShardWeb.DirectoryController do dir_public = (dir_public == "true") manifest = %SApp.Directory.Manifest{public: dir_public, owner: conn.assigns.pk, name: dir_name} - shard = SData.term_hash manifest pid = Shard.Manager.find_or_start manifest {:ok, file_manifest, _file_pid} = SApp.File.create(path, mime_type) diff --git a/shardweb/lib/controllers/page_controller.ex b/shardweb/lib/controllers/page_controller.ex index 5c90416..baf72b9 100644 --- a/shardweb/lib/controllers/page_controller.ex +++ b/shardweb/lib/controllers/page_controller.ex @@ -9,6 +9,14 @@ defmodule ShardWeb.PageController do render conn, "shard_list.html" end + def shard_action(conn, %{"shard_id" => shard_id, "action" => action}) do + shard_id = Base.decode16! shard_id + case action do + "delete" -> Shard.Manager.delete(shard_id) + end + redirect conn, to: page_path(conn, :shard_list) + end + def add_peer(conn, _params) do try do ip = conn.params["ip"] diff --git a/shardweb/lib/router.ex b/shardweb/lib/router.ex index a6a61f9..0b1f686 100644 --- a/shardweb/lib/router.ex +++ b/shardweb/lib/router.ex @@ -19,6 +19,7 @@ defmodule ShardWeb.Router do pipe_through :browser # Use the default browser stack get "/", PageController, :shard_list + post "/", PageController, :shard_action get "/peers", PageController, :peer_list post "/peer/add", PageController, :add_peer diff --git a/shardweb/lib/templates/page/shard_list.html.eex b/shardweb/lib/templates/page/shard_list.html.eex index 3fffef7..79fd794 100644 --- a/shardweb/lib/templates/page/shard_list.html.eex +++ b/shardweb/lib/templates/page/shard_list.html.eex @@ -23,9 +23,10 @@ Shard + URI - <%= for {_id, manifest, why_have_it} <- shard_list() do %> + <%= for {id, manifest, why_have_it} <- shard_list() do %> <%= case why_have_it do %> @@ -37,6 +38,18 @@ <%= render "shard_entry.html", conn: @conn, manifest: manifest, pk: @pk %> + + <%= case why_have_it do %> + <% {:cached, _} -> %> + <%= form_for @conn, page_path(@conn, :shard_action), [class: "form-inline", style: "display: inline", onsubmit: "return confirm('Delete this shard and all its data?');"], fn f -> %> + <%= hidden_input f, :shard_id, value: id |> Base.encode16 %> + <%= hidden_input f, :action, value: "delete" %> + <%= submit "Delete", [class: "btn btn-xs btn-danger"] %> + <% end %> + <% _ -> %>  + <% end %> + + <%= manifest |> ShardURI.from_manifest %> <% end %> -- cgit v1.2.3