defmodule AshUUID do @moduledoc """ Base module containing common utility functions This module contains some things used internally that may also be useful outside of `AshUUID` itself. """ @moduledoc since: "0.1.0" use Spark.Dsl.Extension, imports: [AshUUID.Macros], transformers: [ AshUUID.Transformers.PostgresMigrationDefaults, AshUUID.Transformers.BelongsToAttribute ] def identify_format( <<_::binary-size(8), ?-, _::binary-size(4), ?-, _::binary-size(4), ?-, _::binary-size(4), ?-, _::binary-size(12)>> ), do: :raw def identify_format(<<_::binary-size(22)>>), do: :encoded def identify_format(<<_::128>>), do: :integer def identify_format(string) when is_binary(string) do case String.split(string, "_") do [_, <<_::binary-size(22)>>] -> :prefixed [<<_::binary-size(32)>>] -> :hex _ -> :unknown end end def identify_format(nil), do: nil def identify_format(_term), do: :unknown end