code-corps/code-corps-api

View on GitHub
lib/code_corps/model/preview.ex

Summary

Maintainability
Test Coverage
defmodule CodeCorps.Preview do
  @moduledoc """
  Represents an category on Code Corps, e.g. "Society" and "Technology".
  """

  use CodeCorps.Model
  alias CodeCorps.Services.MarkdownRendererService

  @type t :: %__MODULE__{}

  schema "previews" do
    field :body, :string
    field :markdown, :string

    belongs_to :user, CodeCorps.User

    timestamps()
  end

  @doc """
  Builds a changeset based on the `struct` and `params`.
  """
  def create_changeset(struct, params \\ %{}) do
    struct
    |> cast(params, [:markdown, :user_id])
    |> validate_required([:markdown, :user_id])
    |> assoc_constraint(:user)
    |> MarkdownRendererService.render_markdown_to_html(:markdown, :body)
  end
end