on master help sign in
Make lens and openapi optional.
a468684Nick
id.cabal+16−2
@@ -29,6 +29,16 @@ Flag store
29 Default: False
29 Default: False
30 Manual: False
30 Manual: False
31
31
32+Flag openapi
33+ Description: Enable OpenAPI instances
34+ Default: True
35+ Manual: False
36+
37+Flag lens
38+ Description: Generate lenses
39+ Default: True
40+ Manual: False
41+
32library
42library
33 exposed-modules:
43 exposed-modules:
34 Data.Id
44 Data.Id
@@ -41,8 +51,6 @@ library
41 deepseq,
51 deepseq,
42 hashable,
52 hashable,
43 http-api-data,
53 http-api-data,
44− lens,
45− openapi3,
46 path-pieces,
54 path-pieces,
47 text,
55 text,
48 QuickCheck,
56 QuickCheck,
@@ -66,6 +74,12 @@ library
66 build-depends:
74 build-depends:
67 store,
75 store,
68 cpp-options: -DUSE_STORE
76 cpp-options: -DUSE_STORE
77+ if flag(lens)
78+ build-depends: lens
79+ cpp-options: -DUSE_LENS
80+ if flag(openapi)
81+ build-depends: openapi3
82+ cpp-options: -DUSE_OPENAPI
69
83
70 hs-source-dirs:
84 hs-source-dirs:
71 src
85 src
src/Data/Id.hs+31−15
@@ -4,14 +4,19 @@
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, randomId, unsafeIdTagConvert, coerceId, nilId
8− , IntId, mkIntId, unIntId, unsafeIntIdTagConvert, coerceIntId, _IntId
8+ , IntId, mkIntId, unIntId, unsafeIntIdTagConvert, coerceIntId
9− , Name, mkName, unName, unsafeNameTagConvert, coerceName, _Name
9+ , Name, mkName, unName, unsafeNameTagConvert, coerceName
10+#ifdef USE_LENS
11+ , _Id, _IntId, _Name
12+#endif
10 )
13 )
11 where
14 where
12
15
13import Control.DeepSeq (NFData)
16import Control.DeepSeq (NFData)
17+#ifdef USE_LENS
14import Control.Lens
18import Control.Lens
19+#endif
15import Control.Monad
20import Control.Monad
16import Data.Aeson (FromJSON, FromJSONKey, ToJSON, ToJSONKey)
21import Data.Aeson (FromJSON, FromJSONKey, ToJSON, ToJSONKey)
17import Data.Binary (Binary)
22import Data.Binary (Binary)
@@ -19,7 +24,9 @@ import Data.Coerce (coerce)
19import Data.Data
24import Data.Data
20import Data.Hashable (Hashable)
25import Data.Hashable (Hashable)
21import Data.Int (Int64)
26import Data.Int (Int64)
27+#ifdef USE_OPENAPI
22import Data.OpenApi
28import Data.OpenApi
29+#endif
23import Data.String
30import Data.String
24import Data.Text as T
31import Data.Text as T
25import Data.UUID (UUID)
32import Data.UUID (UUID)
@@ -61,13 +68,14 @@ newtype Id t = Id { unId :: UUID }
61 , DBType
68 , DBType
62#endif
69#endif
63#endif
70#endif
64− , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema
71+ , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey
72+#ifdef USE_OPENAPI
73+ , ToSchema, ToParamSchema
74+#endif
65− , ToParamSchema, FromHttpApiData, ToHttpApiData )
75+ , FromHttpApiData, ToHttpApiData )
66
76
67type role Id nominal
77type role Id nominal
68
78
69−makePrisms ''Id
70−
71mkId :: forall s. UUID -> Id s
79mkId :: forall s. UUID -> Id s
72mkId = coerce
80mkId = coerce
73{-# INLINE mkId #-}
81{-# INLINE mkId #-}
@@ -161,14 +169,15 @@ newtype IntId t = IntId { unIntId :: Int64 }
161 , DBType
169 , DBType
162#endif
170#endif
163#endif
171#endif
164− , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema
172+ , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey
173+#ifdef USE_OPENAPI
174+ , ToSchema, ToParamSchema
175+#endif
165− , ToParamSchema, FromHttpApiData, ToHttpApiData, PathPiece, Arbitrary
176+ , FromHttpApiData, ToHttpApiData, PathPiece, Arbitrary
166 , Num, Integral, Real, Enum )
177 , Num, Integral, Real, Enum )
167
178
168type role IntId nominal
179type role IntId nominal
169
180
170−makePrisms ''IntId
171−
172mkIntId :: forall s. Integer -> IntId s
181mkIntId :: forall s. Integer -> IntId s
173mkIntId = fromInteger
182mkIntId = fromInteger
174{-# INLINE mkIntId #-}
183{-# INLINE mkIntId #-}
@@ -213,14 +222,15 @@ newtype Name t = Name { unName :: Text }
213 , DBType
222 , DBType
214#endif
223#endif
215#endif
224#endif
216− , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema
225+ , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey
226+#ifdef USE_OPENAPI
227+ , ToSchema, ToParamSchema
228+#endif
217− , ToParamSchema, FromHttpApiData, ToHttpApiData, PathPiece
229+ , FromHttpApiData, ToHttpApiData, PathPiece
218 , IsString, Semigroup, Monoid )
230 , IsString, Semigroup, Monoid )
219
231
220type role Name nominal
232type role Name nominal
221
233
222−makePrisms ''Name
223−
224mkName :: forall s. Text -> Name s
234mkName :: forall s. Text -> Name s
225mkName = coerce
235mkName = coerce
226{-# INLINE mkName #-}
236{-# INLINE mkName #-}
@@ -245,3 +255,9 @@ coerceName = coerce
245{-# INLINE coerceName #-}
255{-# INLINE coerceName #-}
246unsafeNameTagConvert = coerce
256unsafeNameTagConvert = coerce
247{-# INLINE unsafeNameTagConvert #-}
257{-# INLINE unsafeNameTagConvert #-}
258+
259+#ifdef USE_LENS
260+makePrisms ''Id
261+makePrisms ''IntId
262+makePrisms ''Name
263+#endif
stack.yaml+6−1
@@ -8,4 +8,9 @@ nix:
8
8
9flags:
9flags:
10 id:
10 id:
11− rel8: true
11+ rel8: false
12+ openapi: false
13+ lens: false
14+ cassava: false
15+ flat: false
16+ store: false