Skip to main content

lib/kameleoon/data/application_version.ex

defmodule Kameleoon.Data.ApplicationVersion do
  @moduledoc """
  Represents the version of the application.
  Supports semantic versioning: major, major.minor, or major.minor.patch.
  """

  alias Kameleoon.Data.Validation

  @enforce_keys [:version]
  defstruct [:version]

  @type t :: %__MODULE__{version: String.t()}

  @spec new!(String.t()) :: t()
  def new!(version) do
    %__MODULE__{version: Validation.non_empty_string!(version, :version)}
  end
end