@@ -4,14 +4,19 @@
44{-# OPTIONS_GHC -Wno-orphans #-}
55
66module Data.Id
7− ( Id, mkId, unId, randomId, unsafeIdTagConvert, coerceId, _Id, nilId
8− , IntId, mkIntId, unIntId, unsafeIntIdTagConvert, coerceIntId, _IntId
9− , Name, mkName, unName, unsafeNameTagConvert, coerceName, _Name
7+ ( Id, mkId, unId, randomId, unsafeIdTagConvert, coerceId, nilId
8+ , IntId, mkIntId, unIntId, unsafeIntIdTagConvert, coerceIntId
9+ , Name, mkName, unName, unsafeNameTagConvert, coerceName
10+#ifdef USE_LENS
11+ , _Id, _IntId, _Name
12+#endif
1013 )
1114 where
1215
1316import Control.DeepSeq (NFData)
17+#ifdef USE_LENS
1418import Control.Lens
19+#endif
1520import Control.Monad
1621import Data.Aeson (FromJSON, FromJSONKey, ToJSON, ToJSONKey)
1722import Data.Binary (Binary)
@@ -19,7 +24,9 @@ import Data.Coerce (coerce)
1924import Data.Data
2025import Data.Hashable (Hashable)
2126import Data.Int (Int64)
27+#ifdef USE_OPENAPI
2228import Data.OpenApi
29+#endif
2330import Data.String
2431import Data.Text as T
2532import Data.UUID (UUID)
@@ -61,13 +68,14 @@ newtype Id t = Id { unId :: UUID }
6168 , DBType
6269#endif
6370#endif
64− , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema
65− , ToParamSchema, FromHttpApiData, ToHttpApiData )
71+ , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey
72+#ifdef USE_OPENAPI
73+ , ToSchema, ToParamSchema
74+#endif
75+ , FromHttpApiData, ToHttpApiData )
6676
6777type role Id nominal
6878
69−makePrisms ''Id
70−
7179mkId :: forall s. UUID -> Id s
7280mkId = coerce
7381{-# INLINE mkId #-}
@@ -161,14 +169,15 @@ newtype IntId t = IntId { unIntId :: Int64 }
161169 , DBType
162170#endif
163171#endif
164− , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema
165− , ToParamSchema, FromHttpApiData, ToHttpApiData, PathPiece, Arbitrary
172+ , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey
173+#ifdef USE_OPENAPI
174+ , ToSchema, ToParamSchema
175+#endif
176+ , FromHttpApiData, ToHttpApiData, PathPiece, Arbitrary
166177 , Num, Integral, Real, Enum )
167178
168179type role IntId nominal
169180
170−makePrisms ''IntId
171−
172181mkIntId :: forall s. Integer -> IntId s
173182mkIntId = fromInteger
174183{-# INLINE mkIntId #-}
@@ -213,14 +222,15 @@ newtype Name t = Name { unName :: Text }
213222 , DBType
214223#endif
215224#endif
216− , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema
217− , ToParamSchema, FromHttpApiData, ToHttpApiData, PathPiece
225+ , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey
226+#ifdef USE_OPENAPI
227+ , ToSchema, ToParamSchema
228+#endif
229+ , FromHttpApiData, ToHttpApiData, PathPiece
218230 , IsString, Semigroup, Monoid )
219231
220232type role Name nominal
221233
222−makePrisms ''Name
223−
224234mkName :: forall s. Text -> Name s
225235mkName = coerce
226236{-# INLINE mkName #-}
@@ -245,3 +255,9 @@ coerceName = coerce
245255{-# INLINE coerceName #-}
246256unsafeNameTagConvert = coerce
247257{-# INLINE unsafeNameTagConvert #-}
258+
259+#ifdef USE_LENS
260+makePrisms ''Id
261+makePrisms ''IntId
262+makePrisms ''Name
263+#endif