aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2017-02-14 14:52:09 +0100
committerneodarz <neodarz@neodarz.net>2017-02-14 14:52:09 +0100
commit146ff0f004d2baa9dbdeafacda4bde7dbb7b0e33 (patch)
tree0abe79d3e3b0a026530f3f0530926b3fff718607 /web
parentb139d6fa3a34b4bff014a7e7ccfa7a7b1f0ffa5f (diff)
downloadthe_transcriber_backend-146ff0f004d2baa9dbdeafacda4bde7dbb7b0e33.tar.xz
the_transcriber_backend-146ff0f004d2baa9dbdeafacda4bde7dbb7b0e33.zip
Rewritting the upload code that copies the file to be uploaded after the insertion in the database
Diffstat (limited to 'web')
-rw-r--r--web/controllers/audio_file_api_controller.ex33
-rw-r--r--web/controllers/audio_file_controller.ex44
2 files changed, 14 insertions, 63 deletions
diff --git a/web/controllers/audio_file_api_controller.ex b/web/controllers/audio_file_api_controller.ex
index 0ba0b54..11ae1a7 100644
--- a/web/controllers/audio_file_api_controller.ex
+++ b/web/controllers/audio_file_api_controller.ex
@@ -10,43 +10,16 @@ defmodule TheTranscriberBackend.AudioFileAPIController do
end
def create(conn, %{"audio_file" => %{"audio_duration" => audio_duration, "audio_path" => upload, "audio_name" => audio_name}}) do
-
- query_table_is_empty = "select * from audio_file;"
- result_table_is_empty = Ecto.Adapters.SQL.query!(Repo, query_table_is_empty, [])
- result_table_is_empty_rows = result_table_is_empty.rows
- case [] do
- ^result_table_is_empty_rows ->
- repo_last_id = 1
-
- # Don't ask why, but it would seem that you must select nextval
- # BEFORE currval... Yes ! Seriously...
- query_nextval = "select nextval('audio_file_id_seq');"
- result_nextval = Ecto.Adapters.SQL.query!(Repo, query_nextval, [])
-
- query_setval = "select setval('audio_file_id_seq', 1);"
- result_setval = Ecto.Adapters.SQL.query!(Repo, query_setval, [])
-
- query_currval= "select currval('audio_file_id_seq');"
- result_currval = Ecto.Adapters.SQL.query!(Repo, query_currval, [])
-
- _ ->
- query_currval = "select max(id) from audio_file;"
- result_currval = Ecto.Adapters.SQL.query!(Repo, query_currval, [])
- [[repo_last_id]] = result_currval.rows # A beautiful pattern match :)
- end
-
- path = "/media/phoenix_test/#{repo_last_id + 1}_#{upload.filename}"
- File.cp(upload.path, path)
+ path = "/media/phoenix_test/"
changeset = AudioFile.changeset(%AudioFile{},
- %{audio_path: path,
+ %{audio_path: upload.filename,
audio_name: audio_name,
audio_duration: audio_duration})
- IO.inspect path
-
case Repo.insert(changeset) do
{:ok, audio_file_api} ->
+ File.cp(upload.path, "#{path}#{audio_file_api.id}_#{upload.filename}")
conn
|> put_status(:created)
|> put_resp_header("location", audio_file_api_path(conn, :show, audio_file_api))
diff --git a/web/controllers/audio_file_controller.ex b/web/controllers/audio_file_controller.ex
index e0f32e6..95bc763 100644
--- a/web/controllers/audio_file_controller.ex
+++ b/web/controllers/audio_file_controller.ex
@@ -14,48 +14,26 @@ defmodule TheTranscriberBackend.AudioFileController do
end
def create(conn, %{"audio_file" => %{"audio_duration" => audio_duration, "audio_path" => upload, "audio_name" => audio_name}}) do
-
- query_table_is_empty = "select * from audio_file;"
- result_table_is_empty = Ecto.Adapters.SQL.query!(Repo, query_table_is_empty, [])
- result_table_is_empty_rows = result_table_is_empty.rows
- case [] do
- ^result_table_is_empty_rows ->
- repo_last_id = 1
-
- # Don't ask why, but it would seem that you must select nextval
- # BEFORE currval... Yes ! Seriously...
- query_nextval = "select nextval('audio_file_id_seq');"
- result_nextval = Ecto.Adapters.SQL.query!(Repo, query_nextval, [])
-
- query_setval = "select setval('audio_file_id_seq', 1);"
- result_setval = Ecto.Adapters.SQL.query!(Repo, query_setval, [])
-
- query_currval= "select currval('audio_file_id_seq');"
- result_currval = Ecto.Adapters.SQL.query!(Repo, query_currval, [])
-
- _ ->
- query_currval = "select max(id) from audio_file;"
- result_currval = Ecto.Adapters.SQL.query!(Repo, query_currval, [])
- [[repo_last_id]] = result_currval.rows # A beautiful pattern match :)
- end
-
- path = "/media/phoenix_test/#{repo_last_id}_#{upload.filename}"
- File.cp(upload.path, path)
+ path = "/media/phoenix_test/"
changeset = AudioFile.changeset(%AudioFile{},
- %{audio_path: path,
+ %{audio_path: upload.filename,
audio_name: audio_name,
audio_duration: audio_duration})
case Repo.insert(changeset) do
- {:ok, _audio_file} ->
+ {:ok, audio_file_api} ->
+ File.cp(upload.path, "#{path}#{audio_file_api.id}_#{upload.filename}")
conn
- |> put_flash(:info, "Audio file uploaded successfully.")
- |> redirect(to: audio_file_path(conn, :index))
+ |> put_status(:created)
+ |> put_resp_header("location", audio_file_api_path(conn, :show, audio_file_api))
+ |> render("show.json", audio_file_api: audio_file_api)
{:error, changeset} ->
- render(conn, "new.html", changeset: changeset)
+ conn
+ |> put_status(:unprocessable_entity)
+ |> render(TheTranscriberBackend.ChangesetView, "error.json", changeset: changeset)
+ end
end
- end