defmodule Zoeyscomputer.Images do @moduledoc """ The Images context. """ import Ecto.Query, warn: false alias Ecto.Repo alias Zoeyscomputer.Users.User alias Zoeyscomputer.Repo alias Zoeyscomputer.Images.Image @doc """ Returns the list of images. ## Examples iex> list_images() [%Image{}, ...] """ def list_images do Repo.all(Image) end @doc """ List Images uploaded by user """ def list_images_by_user(%User{} = user) do Image |> where([a], a.user_id == ^user.id) |> Repo.all() end @doc """ Gets a single image. Raises `Ecto.NoResultsError` if the Image does not exist. ## Examples iex> get_image!(123) %Image{} iex> get_image!(456) ** (Ecto.NoResultsError) """ def get_image!(id), do: Repo.get!(Image, id) def get_image_by!(file) do Image |> Repo.get_by!(file: file) |> Repo.preload(:user) end @doc """ Creates a image. ## Examples iex> create_image(%{field: value}) {:ok, %Image{}} iex> create_image(%{field: bad_value}) {:error, %Ecto.Changeset{}} """ def create_image(attrs \\ %{}) do # attrs = Map.put(attrs, "user_id", user.id) # attrs = Map.put(attrs, "s3_key", s3_key) %Image{} |> Image.changeset(attrs) |> Repo.insert() end @doc """ Updates a image. ## Examples iex> update_image(image, %{field: new_value}) {:ok, %Image{}} iex> update_image(image, %{field: bad_value}) {:error, %Ecto.Changeset{}} """ def update_image(%Image{} = image, attrs) do image |> Image.changeset(attrs) |> Repo.update() end @doc """ Deletes a image. ## Examples iex> delete_image(image) {:ok, %Image{}} iex> delete_image(image) {:error, %Ecto.Changeset{}} """ def delete_image(%Image{} = image) do Repo.delete(image) end @doc """ Returns an `%Ecto.Changeset{}` for tracking image changes. ## Examples iex> change_image(image) %Ecto.Changeset{data: %Image{}} """ def change_image(%Image{} = image, attrs \\ %{}) do Image.changeset(image, attrs) end end