slightly changed how files are stored in the bucket and allows post deletion
This commit is contained in:
@@ -11,6 +11,10 @@ defmodule Mixer.Posts.Media do
|
||||
postgres do
|
||||
table "media"
|
||||
repo Mixer.Repo
|
||||
|
||||
references do
|
||||
reference :tweet, on_delete: :delete
|
||||
end
|
||||
end
|
||||
|
||||
typescript do
|
||||
|
||||
@@ -10,7 +10,7 @@ defmodule Mixer.Posts.MediaUploader do
|
||||
if ext in @extensions, do: :ok, else: {:error, "unsupported file type #{ext}"}
|
||||
end
|
||||
|
||||
def storage_dir(_version, {_file, scope}), do: "uploads/media/#{scope.id}"
|
||||
def storage_dir(_version, {_file, scope}), do: "uploads/media/#{scope.user_id}/#{scope.media_id}"
|
||||
|
||||
def filename(_version, {file, _scope}) do
|
||||
Path.basename(file.file_name, Path.extname(file.file_name))
|
||||
|
||||
@@ -8,6 +8,10 @@ defmodule Mixer.Posts.TweetLike do
|
||||
postgres do
|
||||
table "tweet_likes"
|
||||
repo Mixer.Repo
|
||||
|
||||
references do
|
||||
reference :tweet, on_delete: :delete
|
||||
end
|
||||
end
|
||||
|
||||
actions do
|
||||
|
||||
@@ -11,15 +11,17 @@ defmodule MixerWeb.UploadController do
|
||||
|> put_status(:unauthorized)
|
||||
|> json(%{error: "authentication required"})
|
||||
else
|
||||
scope = %{id: Ash.UUID.generate()}
|
||||
media_id = Ash.UUID.generate()
|
||||
scope = %{user_id: actor.id, media_id: media_id}
|
||||
|
||||
case MediaUploader.store({upload, scope}) do
|
||||
{:ok, file_name} ->
|
||||
s3_key = "uploads/media/#{scope.id}/#{file_name}"
|
||||
s3_key = "uploads/media/#{scope.user_id}/#{scope.media_id}/#{file_name}"
|
||||
url = MediaUploader.url({file_name, scope})
|
||||
|
||||
Mixer.Posts.Media
|
||||
|> Ash.Changeset.for_create(:upload, %{s3_key: s3_key}, actor: actor)
|
||||
|> Ash.Changeset.force_change_attribute(:id, media_id)
|
||||
|> Ash.create()
|
||||
|> case do
|
||||
{:ok, media} ->
|
||||
|
||||
Reference in New Issue
Block a user