defmodule Oban.Pro.UUIDv7 do @moduledoc false # Derived from [bitwalker/uniq](https://github.com/bitwalker/uniq) defmacrop biguint(n), do: quote(do: big - unsigned - integer - size(unquote(n))) @spec generate() :: <<_::288>> def generate do time = System.system_time(:millisecond) <> = :crypto.strong_rand_bytes(10) <> = <>, rand_b::62>> <> end @compile {:inline, e: 1} defp e(0), do: ?0 defp e(1), do: ?1 defp e(2), do: ?2 defp e(3), do: ?3 defp e(4), do: ?4 defp e(5), do: ?5 defp e(6), do: ?6 defp e(7), do: ?7 defp e(8), do: ?8 defp e(9), do: ?9 defp e(10), do: ?a defp e(11), do: ?b defp e(12), do: ?c defp e(13), do: ?d defp e(14), do: ?e defp e(15), do: ?f end