on master help sign in
fix bug, make cassava optional
b8ee3faVille Tirronen
id.cabal+7−1
@@ -4,6 +4,11 @@ name: id
4version: 0.1.0.0
4version: 0.1.0.0
5license-file: LICENSE
5license-file: LICENSE
6
6
7+Flag cassava
8+ Description: Enable Postgresql support
9+ Default: True
10+ Manual: False
11+
7
12
8Flag postgres
13Flag postgres
9 Description: Enable Postgresql support
14 Description: Enable Postgresql support
@@ -42,9 +47,10 @@ library
42 build-depends:
47 build-depends:
43 postgresql-simple
48 postgresql-simple
44 cpp-options: -DUSE_POSTGRES
49 cpp-options: -DUSE_POSTGRES
45− if !impl(ghcjs)
50+ if flag(cassava) && !impl(ghcjs)
46 build-depends:
51 build-depends:
47 cassava
52 cassava
53+ cpp-options: -DUSE_CASSAVA
48 if flag(flat)
54 if flag(flat)
49 build-depends:
55 build-depends:
50 flat,
56 flat,
src/Data/Id.hs+12−2
@@ -25,7 +25,9 @@ import Data.UUID (UUID)
25import qualified Data.UUID as UUID
25import qualified Data.UUID as UUID
26import qualified Data.UUID.V4 as UUID.V4
26import qualified Data.UUID.V4 as UUID.V4
27#ifndef ghcjs_HOST_OS
27#ifndef ghcjs_HOST_OS
28+#ifdef USE_CASSAVA
28import Data.Csv as Csv hiding(Name)
29import Data.Csv as Csv hiding(Name)
30+#endif
29#ifdef USE_POSTGRES
31#ifdef USE_POSTGRES
30import Database.PostgreSQL.Simple.FromField as PG (FromField)
32import Database.PostgreSQL.Simple.FromField as PG (FromField)
31import Database.PostgreSQL.Simple.ToField as PG (ToField)
33import Database.PostgreSQL.Simple.ToField as PG (ToField)
@@ -102,12 +104,14 @@ instance PathPiece (Id t) where
102
104
103#ifndef ghcjs_HOST_OS
105#ifndef ghcjs_HOST_OS
104
106
107+#ifdef USE_CASSAVA
105instance Csv.FromField (Id tag) where
108instance Csv.FromField (Id tag) where
106 parseField = parseField
109 parseField = parseField
107 >=> fmap mkId . maybe (fail "invalid UUID in CSV") pure . UUID.fromText
110 >=> fmap mkId . maybe (fail "invalid UUID in CSV") pure . UUID.fromText
108
111
109instance Csv.ToField (Id tag) where
112instance Csv.ToField (Id tag) where
110 toField = Csv.toField . UUID.toText . coerce
113 toField = Csv.toField . UUID.toText . coerce
114+#endif
111
115
112#endif
116#endif
113
117
@@ -135,7 +139,10 @@ newtype IntId t = IntId { unIntId :: Integer }
135 ( Eq, Ord, Binary
139 ( Eq, Ord, Binary
136#ifndef ghcjs_HOST_OS
140#ifndef ghcjs_HOST_OS
137#ifdef USE_POSTGRES
141#ifdef USE_POSTGRES
142+ , PG.ToField, PG.FromField
143+#endif
144+#ifdef USE_CASSAVA
138− , PG.ToField, PG.FromField, Csv.ToField, Csv.FromField
145+ , Csv.ToField, Csv.FromField
139#endif
146#endif
140#endif
147#endif
141 , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema
148 , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema
@@ -175,7 +182,10 @@ newtype Name t = Name { unName :: Text }
175 ( Eq, Ord, Binary
182 ( Eq, Ord, Binary
176#ifndef ghcjs_HOST_OS
183#ifndef ghcjs_HOST_OS
177#ifdef USE_POSTGRES
184#ifdef USE_POSTGRES
185+ , PG.ToField, PG.FromField
186+#endif
187+#ifdef USE_CASSAVA
178− , PG.ToField, PG.FromField, Csv.ToField, Csv.FromField
188+ , Csv.ToField, Csv.FromField
179#endif
189#endif
180#endif
190#endif
181 , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema
191 , FromJSON, ToJSON, NFData, Hashable, FromJSONKey, ToJSONKey, ToSchema