From 712714c90311c53150f5a7ca5f8241918df82411 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Fri, 8 May 2020 15:37:46 +0200 Subject: [PATCH] refactor: isomorphism for converting sqlbackend-keys --- src/Utils/Lens.hs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Utils/Lens.hs b/src/Utils/Lens.hs index 8edf94784..d75fcb68b 100644 --- a/src/Utils/Lens.hs +++ b/src/Utils/Lens.hs @@ -28,6 +28,8 @@ import qualified Database.Esqueleto as E (Value(..),InnerJoin(..)) import qualified Data.CaseInsensitive as CI +import Database.Persist.Sql (BackendKey(..)) + _PathPiece :: PathPiece v => Prism' Text v _PathPiece = prism' toPathPiece fromPathPiece @@ -65,7 +67,17 @@ _Maybe = iso (is _Just) (bool Nothing (Just ())) _CI :: FoldCase s => Iso' (CI s) s _CI = iso CI.original CI.mk -makeWrapped ''Textarea +instance Wrapped SqlBackendKey where + type Unwrapped SqlBackendKey = Int64 + _Wrapped' = iso unSqlBackendKey SqlBackendKey +instance Rewrapped SqlBackendKey t + +_SqlKey' :: ToBackendKey SqlBackend record => Iso' (Key record) Int64 +_SqlKey' = iso fromSqlKey toSqlKey + +_SqlKey :: ToBackendKey SqlBackend record => Iso' (Key record) SqlBackendKey +_SqlKey = _SqlKey' . _Unwrapped + ----------------------------------- -- Lens Definitions for our Types