From 11bb3ddd1c18254e5c146404db85cf17e4f61e44 Mon Sep 17 00:00:00 2001 From: qdust41 Date: Mon, 30 Mar 2026 12:38:32 -0400 Subject: [PATCH] starting work on adding s3 media support --- lib/mixer/posts.ex | 1 + lib/mixer/posts/media.ex | 40 ++++++++++++++++++++++++++++++++++++++++ lib/mixer/posts/tweet.ex | 10 ++++++++++ 3 files changed, 51 insertions(+) create mode 100644 lib/mixer/posts/media.ex diff --git a/lib/mixer/posts.ex b/lib/mixer/posts.ex index e99466b..7f26faa 100644 --- a/lib/mixer/posts.ex +++ b/lib/mixer/posts.ex @@ -9,6 +9,7 @@ defmodule Mixer.Posts do resources do resource Mixer.Posts.Tweet + resource Mixer.Posts.Media end typescript_rpc do diff --git a/lib/mixer/posts/media.ex b/lib/mixer/posts/media.ex new file mode 100644 index 0000000..d01fbb1 --- /dev/null +++ b/lib/mixer/posts/media.ex @@ -0,0 +1,40 @@ +defmodule Mixer.Posts.Media do + use Ash.Resource, + otp_app: :mixer, + domain: Mixer.Posts, + data_layer: AshPostgres.DataLayer, + authorizers: [Ash.Policy.Authorizer], + extensions: [ + #AshStateMachine, + AshTypescript.Resource + ] + + postgres do + table "media" + repo Mixer.Repo + end + + typescript do + type_name "media" + end + + actions do + defaults [:read, :destroy, create: :*, update: :*] + end + + attributes do + uuid_primary_key :id + + attribute :s3_key, :string do + allow_nil? false + public? true + end + end + + relationships do + belongs_to :tweet, Mixer.Posts.Tweet do + allow_nil? false + public? true + end + end +end diff --git a/lib/mixer/posts/tweet.ex b/lib/mixer/posts/tweet.ex index f8ebf3f..12fd34a 100644 --- a/lib/mixer/posts/tweet.ex +++ b/lib/mixer/posts/tweet.ex @@ -43,6 +43,12 @@ defmodule Mixer.Posts.Tweet do public? true end + attribute :likes, :integer do + allow_nil? false + default 0 + public? true + end + attribute :user_id, :uuid do allow_nil? false public? true @@ -56,6 +62,10 @@ defmodule Mixer.Posts.Tweet do allow_nil? false public? true end + + has_many :s3_key, Mixer.Posts.Media do + public? true + end end policies do