Current section

Files

Jump to
paper_trail lib version.ex
Raw

lib/version.ex

defmodule PaperTrail.Version do
use Ecto.Schema
import Ecto.Changeset
import Ecto.Query
@setter PaperTrail.RepoClient.originator || nil
schema "versions" do
field :event, :string
field :item_type, :string
field :item_id, :integer
field :item_changes, :map
field :originator_id, :integer
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
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
def count do
from(version in __MODULE__, select: count(version.id)) |> PaperTrail.RepoClient.repo.one
end
end