Previous commit (3c988a5f) switched oban_pro to the licensed hex repo at deploy time. Reverting that — keep all three Pro packages vendored so prod image builds don't depend on oban.pro reachability or auth on every CI run. oban_pro 1.7.0 dropped into vendor/oban_pro via `mix hex.package fetch oban_pro 1.7.0 --repo=oban --unpack`. mix.exs goes back to `path: "vendor/oban_pro"` (matching oban_met / oban_web, which were already vendored — and stay vendored since the licensed repo only has older versions of those: 0.1.11 / 2.10.6 vs the 1.1.0 / 2.12.1 we vendor). Schema migration from3c988a5fstays — 1.7.0 tables/indexes are already applied. No code changes.
42 lines
1.3 KiB
Elixir
42 lines
1.3 KiB
Elixir
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)
|
|
|
|
<<rand_a::12, _::6, rand_b::62>> = :crypto.strong_rand_bytes(10)
|
|
|
|
<<a1::4, a2::4, a3::4, a4::4, a5::4, a6::4, a7::4, a8::4, b1::4, b2::4, b3::4, b4::4, c1::4,
|
|
c2::4, c3::4, c4::4, d1::4, d2::4, d3::4, d4::4, e1::4, e2::4, e3::4, e4::4, e5::4, e6::4,
|
|
e7::4, e8::4, e9::4, e10::4, e11::4, e12::4>> =
|
|
<<time::biguint(48), 7::4, rand_a::12, <<2::2>>, rand_b::62>>
|
|
|
|
<<e(a1), e(a2), e(a3), e(a4), e(a5), e(a6), e(a7), e(a8), ?-, e(b1), e(b2), e(b3), e(b4), ?-,
|
|
e(c1), e(c2), e(c3), e(c4), ?-, e(d1), e(d2), e(d3), e(d4), ?-, e(e1), e(e2), e(e3), e(e4),
|
|
e(e5), e(e6), e(e7), e(e8), e(e9), e(e10), e(e11), e(e12)>>
|
|
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
|