diff --git a/.gitignore b/.gitignore index 43182ba..ad243a8 100644 --- a/.gitignore +++ b/.gitignore @@ -28,8 +28,8 @@ nulla-*.tar # Ignore assets that are produced by build tools. /priv/static/assets/ -# Ignore static files -/priv/static/files/ +# Ignore upload dir +/priv/static/system/ # Ignore digested assets cache. /priv/static/cache_manifest.json diff --git a/lib/nulla/models/media_attachment.ex b/lib/nulla/models/media_attachment.ex index 97efee3..61dbb1f 100644 --- a/lib/nulla/models/media_attachment.ex +++ b/lib/nulla/models/media_attachment.ex @@ -1,22 +1,36 @@ defmodule Nulla.Models.MediaAttachment do use Ecto.Schema import Ecto.Changeset + alias Nulla.Repo + alias Nulla.Snowflake alias Nulla.Models.Note @primary_key {:id, :integer, autogenerate: false} schema "media_attachments" do - field :file, :string - field :mime_type, :string - field :description, :string + field :type, :string + field :mediaType, :string + field :url, :string + field :name, :string + field :width, :integer + field :height, :integer belongs_to :note, Note timestamps(type: :utc_datetime) end - def changeset(media, attrs) do - media - |> cast(attrs, [:note_id, :file, :mime_type, :description]) - |> validate_required([:note_id, :file]) + def changeset(media_attachment, attrs) do + media_attachment + |> cast(attrs, [:type, :mediaType, :url, :name, :width, :height, :note_id]) + |> validate_required([:type, :mediaType, :url, :note_id]) + end + + def create_media_attachment(attrs) when is_map(attrs) do + id = Map.get(attrs, :id, Snowflake.next_id()) + + %__MODULE__{} + |> changeset(attrs) + |> put_change(:id, id) + |> Repo.insert() end end diff --git a/lib/nulla_web.ex b/lib/nulla_web.ex index 9feaa88..0c0b0cb 100644 --- a/lib/nulla_web.ex +++ b/lib/nulla_web.ex @@ -17,7 +17,7 @@ defmodule NullaWeb do those modules here. """ - def static_paths, do: ~w(assets files fonts images favicon.ico robots.txt) + def static_paths, do: ~w(assets system fonts images favicon.ico robots.txt) def router do quote do diff --git a/priv/repo/migrations/20250615131644_create_media_attachments.exs b/priv/repo/migrations/20250615131644_create_media_attachments.exs index 1d9fe64..efacd89 100644 --- a/priv/repo/migrations/20250615131644_create_media_attachments.exs +++ b/priv/repo/migrations/20250615131644_create_media_attachments.exs @@ -4,10 +4,13 @@ defmodule Nulla.Repo.Migrations.CreateMediaAttachments do def change do create table(:media_attachments, primary_key: false) do add :id, :bigint, primary_key: true + add :type, :string, null: false + add :mediaType, :string, null: false + add :url, :string, null: false + add :name, :string + add :width, :integer + add :height, :integer add :note_id, references(:notes, on_delete: :delete_all), null: false - add :file, :string, null: false - add :mime_type, :string - add :description, :string timestamps(type: :utc_datetime) end