defmodule DaProductAppWeb.MerchantLogoController do use DaProductAppWeb, :controller require Logger import Ecto.Query alias DaProductApp.Repos.ShukriaMmsRepo @doc """ Serves the merchant logo image by user_id. GET /v1/merchant/logo/:user_id """ def show(conn, %{"user_id" => user_id_str}) do user_id = case Integer.parse(user_id_str) do {id, _} -> id :error -> nil end if is_nil(user_id) do conn |> put_status(:bad_request) |> json(%{error: "Invalid user_id"}) else result = from(c in "merchant_configuration", where: c.user_id == ^user_id, select: %{logo: c.logo}, limit: 1 ) |> ShukriaMmsRepo.one() case result do %{logo: logo} when is_binary(logo) and byte_size(logo) > 0 -> conn |> put_resp_content_type("image/jpeg") |> put_resp_header("cache-control", "public, max-age=86400") |> send_resp(200, logo) _ -> Logger.warning("MerchantLogoController - no logo found for user_id: #{user_id}") conn |> put_status(:not_found) |> json(%{error: "Logo not found"}) end end rescue e -> Logger.error("MerchantLogoController failed: #{inspect(e)}") conn |> put_status(:internal_server_error) |> json(%{error: "Failed to retrieve logo"}) end end