on master help sign in
Utility for RFC 4122
ef95481Ville Tirronen
src/Data/Id.hs+6−1
@@ -4,7 +4,7 @@
4{-# OPTIONS_GHC -Wno-orphans #-}
4{-# OPTIONS_GHC -Wno-orphans #-}
5
5
6module Data.Id
6module Data.Id
7− ( Id, mkId, unId, unsafeIdTagConvert, coerceId, _Id, nilId
7+ ( Id, mkId, unId, randomId, unsafeIdTagConvert, coerceId, _Id, nilId
8 , IntId, mkIntId, unIntId, unsafeIntIdTagConvert, coerceIntId, _IntId
8 , IntId, mkIntId, unIntId, unsafeIntIdTagConvert, coerceIntId, _IntId
9 , Name, mkName, unName, unsafeNameTagConvert, coerceName, _Name
9 , Name, mkName, unName, unsafeNameTagConvert, coerceName, _Name
10 )
10 )
@@ -23,6 +23,7 @@ import Data.String
23import Data.Text as T
23import Data.Text as T
24import Data.UUID (UUID)
24import Data.UUID (UUID)
25import qualified Data.UUID as UUID
25import qualified Data.UUID as UUID
26+import qualified Data.UUID.V4 as UUID.V4
26#ifndef ghcjs_HOST_OS
27#ifndef ghcjs_HOST_OS
27import Database.PostgreSQL.Simple.FromField as PG (FromField)
28import Database.PostgreSQL.Simple.FromField as PG (FromField)
28import Database.PostgreSQL.Simple.ToField as PG (ToField)
29import Database.PostgreSQL.Simple.ToField as PG (ToField)
@@ -53,6 +54,10 @@ mkId :: forall s. UUID -> Id s
53mkId = coerce
54mkId = coerce
54{-# INLINE mkId #-}
55{-# INLINE mkId #-}
55
56
57+randomId :: forall s. IO (Id s)
58+randomId = coerce <$> UUID.V4.nextRandom
59+{-# INLINE randomId #-}
60+
56instance KnownSymbol s => Show (Id s) where
61instance KnownSymbol s => Show (Id s) where
57 show (Id v) = "Id-" <> symbolVal (Proxy @s) <> "-" <> show v
62 show (Id v) = "Id-" <> symbolVal (Proxy @s) <> "-" <> show v
58
63