defmodule Outlook.Artikel do @moduledoc """ The Artikel context. """ alias Outlook.Translations.Translation import Ecto.Query, warn: false alias Outlook.Repo def list_artikel do Repo.all(from t in Translation, where: t.public == true) |> Repo.preload([article: :author]) end def get_artikel!(artikel) when is_struct(artikel), do: get_artikel!(artikel.id) def get_artikel!(id) do Repo.one(from t in Translation, where: t.id == ^id and t.public == true) |> Repo.preload([article: :author]) end def get_artikel_by_tid(tid) do artikel = tid |> String.split(~r/--(?=[0-9A-Za-z])/) |> List.last() |> String.to_integer(36) |> get_artikel!() case artikel do %Translation{} -> {:ok, artikel} _ -> {:error, "Artikel does not exist, or isn't public."} end end end