summaryrefslogtreecommitdiff
path: root/Biz/Id.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Biz/Id.hs')
-rw-r--r--Biz/Id.hs56
1 files changed, 0 insertions, 56 deletions
diff --git a/Biz/Id.hs b/Biz/Id.hs
deleted file mode 100644
index 344149d..0000000
--- a/Biz/Id.hs
+++ /dev/null
@@ -1,56 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-
--- Integer-based identifier.
-module Biz.Id
- ( Id (..),
- mk,
- untag,
- )
-where
-
-import Alpha
-import Data.Aeson (FromJSON (..), ToJSON (..))
-import Data.Binary (Binary)
-import Data.Data (Data)
-import Servant (FromHttpApiData (..), ToHttpApiData (..))
-
-newtype Id entity = Id Int
- deriving (Eq, Ord, Show, Generic, Typeable, Data)
-
-mk :: proxy entity -> Int -> Id entity
-mk _ = Id
-
-untag :: Id entity -> Int
-untag (Id i) = i
-
-instance Hashable (Id entity)
-
-instance Binary (Id entity)
-
-instance Enum (Id entity) where
- toEnum = mk (Proxy :: Proxy entity)
- fromEnum = untag
-
-instance NFData (Id entity) where
- rnf (Id s) = rnf s
-
-instance FromJSON (Id entity) where
- parseJSON = fmap Id <. parseJSON
-
-instance ToJSON (Id entity) where
- toJSON = toJSON <. untag
-
--- this is just provided to satisfy Monoid, no reason to actually use it
-instance Semigroup (Id entity) where
- a <> b = mk (Proxy :: Proxy entity) <| untag a + untag b
-
-instance Monoid (Id entity) where
- mempty = mk (Proxy :: Proxy entity) 0
-
-instance FromHttpApiData (Id entity) where
- parseUrlPiece p = mk (Proxy :: Proxy entity) </ parseUrlPiece p
-
-instance ToHttpApiData (Id entity) where
- toUrlPiece p = untag p |> tshow