GeoGenius.ReleaseArtifacts.Artifact (geo_genius v0.2.0)

Copy Markdown View Source

One artifact a release composes, together with where it resolves to on this machine.

:path is where the artifact belongs in the configured cache, whether or not anything is there: :present? is what says a file is actually sitting at it. Reporting the two separately is what lets a caller name the path an operator has to place a licensed file at, rather than only reporting that something is missing.

Every other field restates the catalog row the artifact was read from, so a caller that has this struct never has to go back to the catalog for the checksum it should verify against or the source release it came from.

Summary

Types

t()

@type t() :: %GeoGenius.ReleaseArtifacts.Artifact{
  artifact_id: Ecto.UUID.t(),
  cache_key: String.t(),
  collection_key: String.t(),
  expected_bytes: integer(),
  expected_sha256: String.t(),
  format: String.t(),
  logical_name: String.t(),
  metadata: map(),
  observed_bytes: integer() | nil,
  observed_sha256: String.t() | nil,
  operator_supplied: boolean(),
  path: Path.t(),
  present?: boolean(),
  release_id: Ecto.UUID.t(),
  source_key: String.t(),
  source_release_id: Ecto.UUID.t(),
  source_release_key: String.t(),
  url: String.t() | nil,
  validated_at: DateTime.t() | nil
}