on master help sign in
Merge pull request #4 from typeable/ville/random-ids
commit0ff950b1bd8ce5a7f0006bd515376cab9cc7ea43 authorVille Tirronen <ville@typeable.io> dateThu 5 May 2022, 10:24 (4 years ago) parent676e18eef95481
1 file changed+6−1
src/Data/Id.hs+6−1
src/Data/Id.hs+6−1
@@ -4,7 +4,7 @@
44{-# OPTIONS_GHC -Wno-orphans #-}
55
66module Data.Id
7− ( Id, mkId, unId, unsafeIdTagConvert, coerceId, _Id, nilId
7+ ( Id, mkId, unId, randomId, unsafeIdTagConvert, coerceId, _Id, nilId
88 , IntId, mkIntId, unIntId, unsafeIntIdTagConvert, coerceIntId, _IntId
99 , Name, mkName, unName, unsafeNameTagConvert, coerceName, _Name
1010 )
@@ -23,6 +23,7 @@ import Data.String
2323import Data.Text as T
2424import Data.UUID (UUID)
2525import qualified Data.UUID as UUID
26+import qualified Data.UUID.V4 as UUID.V4
2627#ifndef ghcjs_HOST_OS
2728import Database.PostgreSQL.Simple.FromField as PG (FromField)
2829import Database.PostgreSQL.Simple.ToField as PG (ToField)
@@ -53,6 +54,10 @@ mkId :: forall s. UUID -> Id s
5354mkId = coerce
5455{-# INLINE mkId #-}
5556
57+randomId :: forall s. IO (Id s)
58+randomId = coerce <$> UUID.V4.nextRandom
59+{-# INLINE randomId #-}
60+
5661instance KnownSymbol s => Show (Id s) where
5762 show (Id v) = "Id-" <> symbolVal (Proxy @s) <> "-" <> show v
5863