Skip to content

Commit

Permalink
PaperTrail.get_current\1 added
Browse files Browse the repository at this point in the history
  • Loading branch information
izelnakri committed Jul 19, 2016
1 parent 324efe5 commit dc6eb6d
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 3 deletions.
7 changes: 7 additions & 0 deletions lib/paper_trail.ex
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ defmodule PaperTrail do
VersionQueries.get_version(record)
end

@doc """
Gets the current record of a version
"""
def get_current(version) do
VersionQueries.get_current(version)
end

@doc """
Inserts a record to the database with a related version insertion in one transaction
"""
Expand Down
8 changes: 8 additions & 0 deletions lib/paper_trail/version_queries.ex
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,14 @@ defmodule PaperTrail.VersionQueries do
last(version_query(item_type, record.id)) |> Repo.one
end

@doc """
Gets the current record of a version
"""
def get_current(version) do
Repo.get("Elixir." <> version.item_type |> String.to_atom, version.item_id)
end


defp version_query(item_type, id) do
from v in Version,
where: v.item_type == ^item_type and v.item_id == ^id
Expand Down
4 changes: 2 additions & 2 deletions lib/version.ex
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ defmodule PaperTrail.Version do
"""
def changeset(model, params \\ :empty) do
model
|> validate_required(~w(event item_type item_id created_at))
|> cast(params, ~w(meta))
|> validate_required(~w(event item_type item_id))
|> cast(params, ~w(meta inserted_at))
end
end
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ defmodule PaperTrail.Mixfile do

def project do
[app: :paper_trail,
version: "0.1.2",
version: "0.1.3",
elixir: "~> 1.3",
description: description,
build_embedded: Mix.env == :prod,
Expand Down
6 changes: 6 additions & 0 deletions test/paper_trail/version_queries_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@ defmodule PaperTrailTest.VersionQueries do
assert PaperTrail.get_versions(Person, last_person.id) == target_versions
end

test "get_current gives us the current record of a version" do
person = first(Person, :id) |> Repo.one
first_version = Version |> where([v], v.item_type == "Person" and v.item_id == ^person.id) |> first |> Repo.one

assert PaperTrail.get_current(first_version) == person
end
# query meta data!!

end

0 comments on commit dc6eb6d

Please sign in to comment.