on master help sign in
id.cabal+14−4
since splitsnapshots
unifiedsplit
@@ -23,6 +23,12 @@ flag store
23 default: False
23 default: False
24 manual: False
24 manual: False
25
25
26+flag uuid-impl
27+ description: Include some functions with extra dependencies.
28+ Disable to reduce dependencies.
29+ default: True
30+ manual: False
31+
26library
32library
27 exposed-modules: Data.Id
33 exposed-modules: Data.Id
28 build-depends:
34 build-depends:
@@ -35,20 +41,24 @@ library
35 , lens
41 , lens
36 , path-pieces
42 , path-pieces
37 , text
43 , text
38− , uuid >=1.3.9
44+ , uuid-types
45+ if flag(uuid-impl)
46+ build-depends:
47+ , uuid >=1.3.9
48+ cpp-options: -DUSE_UUID
39
49
40− if !(impl(ghcjs) || arch(javascript))
50+ if !(impl(ghcjs) || arch(javascript) || arch(wasm32))
41 build-depends:
51 build-depends:
42 , openapi3
52 , openapi3
43 , QuickCheck
53 , QuickCheck
44
54
45 cpp-options: -DBACKEND
55 cpp-options: -DBACKEND
46
56
47− if (flag(postgres) && !(impl(ghcjs) || arch(javascript)))
57+ if (flag(postgres) && !(impl(ghcjs) || arch(javascript) || arch(wasm32)))
48 build-depends: postgresql-simple
58 build-depends: postgresql-simple
49 cpp-options: -DUSE_POSTGRES
59 cpp-options: -DUSE_POSTGRES
50
60
51− if (flag(cassava) && !(impl(ghcjs) || arch(javascript)))
61+ if (flag(cassava) && !(impl(ghcjs) || arch(javascript) || arch(wasm32)))
52 build-depends: cassava
62 build-depends: cassava
53 cpp-options: -DUSE_CASSAVA
63 cpp-options: -DUSE_CASSAVA
54
64
src/Data/Id.hs+11−4
@@ -4,9 +4,12 @@
4{-# OPTIONS_GHC -Wno-orphans #-}
4{-# OPTIONS_GHC -Wno-orphans #-}
5
5
6module Data.Id
6module Data.Id
7− ( Id, mkId, unId, randomId, unsafeIdTagConvert, coerceId, _Id, nilId
7+ ( Id, mkId, unId, 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+#ifdef USE_UUID
11+ , randomId
12+#endif
10 )
13 )
11 where
14 where
12
15
@@ -20,15 +23,17 @@ import Data.Data
20import Data.Hashable (Hashable)
23import Data.Hashable (Hashable)
21import Data.String
24import Data.String
22import Data.Text as T
25import Data.Text as T
23−import Data.UUID (UUID)
26+import Data.UUID.Types (UUID)
24−import qualified Data.UUID as UUID
27+import qualified Data.UUID.Types as UUID
25−import qualified Data.UUID.V4 as UUID.V4
26import GHC.TypeLits
28import GHC.TypeLits
27import Prelude as P
29import Prelude as P
28import Text.ParserCombinators.ReadP
30import Text.ParserCombinators.ReadP
29import Web.HttpApiData
31import Web.HttpApiData
30import Web.PathPieces (PathPiece(..))
32import Web.PathPieces (PathPiece(..))
31
33
34+#ifdef USE_UUID
35+import qualified Data.UUID.V4 as UUID.V4
36+#endif
32#ifdef BACKEND
37#ifdef BACKEND
33import Data.OpenApi
38import Data.OpenApi
34import Test.QuickCheck
39import Test.QuickCheck
@@ -71,9 +76,11 @@ mkId :: forall s. UUID -> Id s
71mkId = coerce
76mkId = coerce
72{-# INLINE mkId #-}
77{-# INLINE mkId #-}
73
78
79+#ifdef USE_UUID
74randomId :: forall s. IO (Id s)
80randomId :: forall s. IO (Id s)
75randomId = coerce <$> UUID.V4.nextRandom
81randomId = coerce <$> UUID.V4.nextRandom
76{-# INLINE randomId #-}
82{-# INLINE randomId #-}
83+#endif
77
84
78instance KnownSymbol s => Show (Id s) where
85instance KnownSymbol s => Show (Id s) where
79 show (Id v) = "Id-" <> symbolVal (Proxy @s) <> "-" <> P.show v
86 show (Id v) = "Id-" <> symbolVal (Proxy @s) <> "-" <> P.show v