Skip to content

Commit c89e304

Browse files
committed
Simplify autogeneration of Tds UUIDs
1 parent 15f4330 commit c89e304

File tree

1 file changed

+13
-30
lines changed

1 file changed

+13
-30
lines changed

lib/ecto/adapters/tds/types.ex

+13-30
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ if Code.ensure_loaded?(Tds) do
2020
"""
2121
@type raw :: <<_::128>>
2222

23-
2423
@doc false
2524
@impl true
2625
def type(), do: :uuid
@@ -47,7 +46,6 @@ if Code.ensure_loaded?(Tds) do
4746
end
4847

4948
def cast(<<bin::binary-size(16)>>), do: encode(bin)
50-
5149
def cast(_), do: :error
5250

5351
@doc """
@@ -91,11 +89,11 @@ if Code.ensure_loaded?(Tds) do
9189
"""
9290
@impl true
9391
@spec dump(t | any) :: {:ok, raw} | :error
94-
def dump(<< a1, a2, a3, a4, a5, a6, a7, a8, ?-,
95-
b1, b2, b3, b4, ?-,
96-
c1, c2, c3, c4, ?-,
97-
d1, d2, d3, d4, ?-,
98-
e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 >>) do
92+
def dump(<<a1, a2, a3, a4, a5, a6, a7, a8, ?-,
93+
b1, b2, b3, b4, ?-,
94+
c1, c2, c3, c4, ?-,
95+
d1, d2, d3, d4, ?-,
96+
e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12>>) do
9997
try do
10098
<< d(a7)::4, d(a8)::4, d(a5)::4, d(a6)::4,
10199
d(a3)::4, d(a4)::4, d(a1)::4, d(a2)::4,
@@ -178,29 +176,15 @@ if Code.ensure_loaded?(Tds) do
178176
"""
179177
@spec bingenerate() :: raw
180178
def bingenerate do
181-
<< a1::4, a2::4, a3::4, a4::4,
182-
a5::4, a6::4, a7::4, a8::4,
183-
b1::4, b2::4, b3::4, b4::4,
184-
_ ::4, c2::4, c3::4, c4::4,
185-
d1::4, d2::4, d3::4, d4::4,
186-
e1::4, e2::4, e3::4, e4::4,
187-
_ ::4, e6::4, e7::4, e8::4,
188-
e9::4, e10::4, e11::4, e12::4 >> = :crypto.strong_rand_bytes(16)
189-
<< a7::4, a8::4, a5::4, a6::4,
190-
a3::4, a4::4, a1::4, a2::4,
191-
b3::4, b4::4, b1::4, b2::4,
192-
c3::4, c4::4, 4 ::4, c2::4,
193-
d1::4, d2::4, d3::4, d4::4,
194-
e1::4, e2::4, e3::4, e4::4,
195-
2 ::4, e6::4, e7::4, e8::4,
196-
e9::4, e10::4, e11::4, e12::4 >>
179+
<<u0::56, u1::36, u2::28>> = :crypto.strong_rand_bytes(15)
180+
<<u0::56, 4::4, u1::36, 2::4, u2::28>>
197181
end
198182

199183
# Callback invoked by autogenerate fields.
200184
@doc false
201185
def autogenerate, do: generate()
202186

203-
defp encode(<< a1::4, a2::4, a3::4, a4::4,
187+
defp encode(<<a1::4, a2::4, a3::4, a4::4,
204188
a5::4, a6::4, a7::4, a8::4,
205189
b1::4, b2::4, b3::4, b4::4,
206190
c1::4, c2::4, c3::4, c4::4,
@@ -265,13 +249,12 @@ if Code.ensure_loaded?(Tds) do
265249
"""
266250
@type varchar :: {String.t, :varchar}
267251

268-
269252
@doc false
270253
@impl true
271254
def type(), do: :varchar
272255

273256
@doc """
274-
Casts to string
257+
Casts to string.
275258
"""
276259
@spec cast(t | varchar | any) :: {:ok, t} | :error
277260
@impl true
@@ -297,19 +280,19 @@ if Code.ensure_loaded?(Tds) do
297280
end
298281
end
299282

300-
301-
@doc false
283+
@doc """
284+
Loads the DB type as is.
285+
"""
302286
@impl true
303287
@spec load(t | any) :: {:ok, t} | :error
304288
def load(value) do
305-
# what ever TDS returns just pass back to ecto. It is already a string
306289
{:ok, value}
307290
end
308291

309292
@doc """
310293
Converts a string representing a VarChar into a tuple `{value, :varchar}`.
311294
312-
returns `:error` if value is not binary
295+
Returns `:error` if value is not binary.
313296
"""
314297
@impl true
315298
@spec dump(t | any) :: {:ok, varchar} | :error

0 commit comments

Comments
 (0)