1.1 KiB · text 5af55d9
defmodule GitGud.Workflows.CacheEntry do
use Ecto.Schema
import Ecto.Changeset
alias GitGud.Repositories.Repository
schema "cache_entries" do
field :key, :string
field :version, :string
field :ref, :string
field :storage_key, :string
field :size, :integer
field :archived_at, :utc_datetime
field :last_used_at, :utc_datetime
belongs_to :repository, Repository
timestamps(type: :utc_datetime)
end
def reserve_changeset(struct, attrs) do
struct
|> cast(attrs, [:repository_id, :key, :version, :ref, :storage_key])
|> validate_required([:repository_id, :key, :version, :storage_key])
|> validate_length(:key, max: 600)
|> validate_length(:version, max: 128)
end
def finalize_changeset(struct, size) do
change(struct,
size: size,
archived_at: DateTime.utc_now(:second),
last_used_at: DateTime.utc_now(:second)
)
end
def touch_changeset(struct),
do: change(struct, last_used_at: DateTime.utc_now(:second))
def finalized?(%__MODULE__{archived_at: t}), do: not is_nil(t)
end