Current section

Files

Jump to
step_flow lib step_flow progressions progression.ex
Raw

lib/step_flow/progressions/progression.ex

defmodule StepFlow.Progressions.Progression do
use Ecto.Schema
import Ecto.Changeset
alias StepFlow.Jobs.Job
alias StepFlow.Progressions.Progression
@moduledoc false
schema "step_flow_progressions" do
field(:datetime, :utc_datetime)
field(:docker_container_id, :string)
field(:progression, :integer)
field(:system_info, :map)
belongs_to(:job, Job, foreign_key: :job_id)
timestamps()
end
@doc false
def changeset(%Progression{} = progression, attrs) do
progression
|> cast(attrs, [:datetime, :docker_container_id, :system_info, :job_id, :progression])
|> foreign_key_constraint(:job_id)
|> validate_required([:datetime, :docker_container_id, :job_id, :progression])
end
@doc """
Returns the last updated progression of a list of progression.
"""
def get_last_progression(progression) when is_list(progression) do
progression
|> Enum.sort(fn progression_1, progression_2 ->
case NaiveDateTime.compare(progression_1.inserted_at, progression_2.inserted_at) do
:lt -> true
:gt -> false
:eq -> progression_1.id < progression_2.id
end
end)
|> List.last()
end
def get_last_progression(%Progression{} = progression), do: progression
def get_last_progression(_progression), do: nil
end