defmodule Crumb.VersionQueries do import Ecto.Query alias Crumb.Version @repo Crumb.RepoClient.repo def get_versions(model, id) do item_type = model |> Module.split |> List.last version_query(item_type, id) |> @repo.all end def get_versions(record) do item_type = record.__struct__ |> Module.split |> List.last version_query(item_type, record.id) |> @repo.all end def get_version(model, id) do item_type = Module.split(model) |> List.last last(version_query(item_type, id)) |> @repo.one end def get_version(record) do item_type = record.__struct__ |> Module.split |> List.last last(version_query(item_type, record.id)) |> @repo.one end defp version_query(item_type, id) do from v in Version, where: v.item_type == ^item_type and v.item_id == ^id end end