Packages
paper_trail
0.7.5
1.1.2
1.1.1
1.1.0
1.0.0
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.1
0.10.0
0.9.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.3
0.5.2
0.5.0
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
Track and record all the changes in your database. Revert back to anytime in history.
Current section
Files
Jump to
Current section
Files
lib/version.ex
defmodule PaperTrail.Version do
use Ecto.Schema
import Ecto.Changeset
import Ecto.Query
@setter PaperTrail.RepoClient.originator || nil
@item_type Application.get_env(:paper_trail, :item_type, :integer)
@originator_type Application.get_env(:paper_trail, :originator_type, :integer)
schema "versions" do
field :event, :string
field :item_type, :string
field :item_id, @item_type
field :item_changes, :map
field :originator_id, @originator_type
field :origin, :string, read_after_writes: true
field :meta, :map
if @setter do
belongs_to @setter[:name], @setter[:model], define_field: false, foreign_key: :originator_id, type: @originator_type
end
timestamps(updated_at: false)
end
def changeset(model, params \\ :empty) do
model
|> cast(params, [:item_type, :item_id, :item_changes, :origin, :originator_id, :meta])
|> validate_required([:event, :item_type, :item_id, :item_changes])
end
@doc """
Returns the count of all version records in the database
"""
def count do
from(version in __MODULE__, select: count(version.id)) |> PaperTrail.RepoClient.repo.one
end
@doc """
Returns the first version record in the database by :inserted_at
"""
def first do
from(record in __MODULE__, limit: 1, order_by: [asc: :inserted_at])
|> PaperTrail.RepoClient.repo.one
end
@doc """
Returns the last version record in the database by :inserted_at
"""
def last do
from(record in __MODULE__, limit: 1, order_by: [desc: :inserted_at])
|> PaperTrail.RepoClient.repo.one
end
end