From cefec1aabd0e97159f0b23c70c79a7538485c8e6 Mon Sep 17 00:00:00 2001 From: Jamey Greenwood Date: Wed, 21 Jan 2026 22:08:19 +0000 Subject: [PATCH] feat: add image metadata fields for optimization pipeline - Add source_width, source_height, variants_status fields to images table - Remove thumbnail_data (now derived to disk cache) - Add Oban tables via Oban.Migration.up(version: 12) - Update Image schema changeset to include new fields Co-Authored-By: Claude Opus 4.5 --- lib/simpleshop_theme/media/image.ex | 17 +++++++++++++++-- ...260121220351_add_image_metadata_and_oban.exs | 15 +++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 priv/repo/migrations/20260121220351_add_image_metadata_and_oban.exs diff --git a/lib/simpleshop_theme/media/image.ex b/lib/simpleshop_theme/media/image.ex index 4ee0fdb..3e4c965 100644 --- a/lib/simpleshop_theme/media/image.ex +++ b/lib/simpleshop_theme/media/image.ex @@ -13,7 +13,9 @@ defmodule SimpleshopTheme.Media.Image do field :data, :binary field :is_svg, :boolean, default: false field :svg_content, :string - field :thumbnail_data, :binary + field :source_width, :integer + field :source_height, :integer + field :variants_status, :string, default: "pending" timestamps(type: :utc_datetime) end @@ -23,7 +25,18 @@ defmodule SimpleshopTheme.Media.Image do @doc false def changeset(image, attrs) do image - |> cast(attrs, [:image_type, :filename, :content_type, :file_size, :data, :is_svg, :svg_content]) + |> cast(attrs, [ + :image_type, + :filename, + :content_type, + :file_size, + :data, + :is_svg, + :svg_content, + :source_width, + :source_height, + :variants_status + ]) |> validate_required([:image_type, :filename, :content_type, :file_size, :data]) |> validate_inclusion(:image_type, ~w(logo header product)) |> validate_number(:file_size, less_than: @max_file_size) diff --git a/priv/repo/migrations/20260121220351_add_image_metadata_and_oban.exs b/priv/repo/migrations/20260121220351_add_image_metadata_and_oban.exs new file mode 100644 index 0000000..7107e92 --- /dev/null +++ b/priv/repo/migrations/20260121220351_add_image_metadata_and_oban.exs @@ -0,0 +1,15 @@ +defmodule SimpleshopTheme.Repo.Migrations.AddImageMetadataAndOban do + use Ecto.Migration + + def change do + alter table(:images) do + add :source_width, :integer + add :source_height, :integer + add :variants_status, :string, default: "pending" + + remove :thumbnail_data + end + + Oban.Migration.up(version: 12) + end +end