Skip to content

Commit

Permalink
Merge pull request #39 from foxhound-systems/persistent-2.14-update
Browse files Browse the repository at this point in the history
Add support for persistent-2.14 to serversession-backend-persistent
  • Loading branch information
ncaq authored Aug 24, 2024
2 parents ae6c5e6 + ccef104 commit 777261a
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: >= 1.10
name: serversession-backend-persistent
version: 2.0.1
version: 2.0.2
license: MIT
license-file: LICENSE
author: Felipe Lessa <felipe.lessa@gmail.com>
Expand Down Expand Up @@ -28,7 +28,7 @@ library
, bytestring
, cereal >= 0.4
, path-pieces
, persistent == 2.13.*
, persistent >= 2.13.0.0 && < 2.15.0.0
, tagged >= 0.7
, text
, time
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{-# LANGUAGE CPP #-}
-- | Internal module exposing the guts of the package. Use at
-- your own risk. No API stability guarantees apply.
module Web.ServerSession.Backend.Persistent.Internal.Impl
Expand All @@ -14,25 +15,26 @@ module Web.ServerSession.Backend.Persistent.Internal.Impl
, throwSS
) where

import Control.Applicative as A
import Control.Monad (void)
import Control.Monad.IO.Class (liftIO)
import Data.Proxy (Proxy(..))
import Data.Time (UTCTime)
import Data.Typeable (Typeable)
import Database.Persist (PersistEntity(..))
import Web.PathPieces (PathPiece)
import Web.ServerSession.Core

import qualified Control.Exception as E
import qualified Data.Aeson as A
import qualified Data.Text as T
import qualified Database.Persist as P
import qualified Database.Persist.EntityDef.Internal as P (EntityDef(..)) -- I need EntityDef constructor.
import qualified Database.Persist.Quasi.Internal as P (UnboundEntityDef, unbindEntityDef)
import qualified Database.Persist.Sql as P

import Web.ServerSession.Backend.Persistent.Internal.Types
import Control.Applicative as A
import Control.Monad (void)
import Control.Monad.IO.Class (liftIO)
import Data.Proxy (Proxy (..))
import Data.Time (UTCTime)
import Data.Typeable (Typeable)
import Database.Persist (PersistEntity (..))
import Web.PathPieces (PathPiece)
import Web.ServerSession.Core

import qualified Control.Exception as E
import qualified Data.Aeson as A
import qualified Data.Text as T
import qualified Database.Persist as P
import qualified Database.Persist.EntityDef.Internal as P (EntityDef (..))
import qualified Database.Persist.Quasi.Internal as P (UnboundEntityDef,
unbindEntityDef)
import qualified Database.Persist.Sql as P

import Web.ServerSession.Backend.Persistent.Internal.Types

-- We can't use the Template Haskell since we want to generalize
-- some fields.
Expand All @@ -57,6 +59,9 @@ deriving instance Eq (Decomposed sess) => Eq (PersistentSession sess)
deriving instance Ord (Decomposed sess) => Ord (PersistentSession sess)
deriving instance Show (Decomposed sess) => Show (PersistentSession sess)

#if MIN_VERSION_persistent(2,14,0)
instance P.SafeToInsert (PersistentSession sess)
#endif

type PersistentSessionId sess = Key (PersistentSession sess)

Expand Down Expand Up @@ -106,11 +111,19 @@ instance forall sess. P.PersistFieldSql (Decomposed sess) => P.PersistEntity (Pe
pfd = P.persistFieldDef

toPersistFields (PersistentSession a b c d e) =
#if MIN_VERSION_persistent(2,14,0)
[ P.toPersistValue a
, P.toPersistValue b
, P.toPersistValue c
, P.toPersistValue d
, P.toPersistValue e ]
#else
[ P.SomePersistField a
, P.SomePersistField b
, P.SomePersistField c
, P.SomePersistField d
, P.SomePersistField e ]
#endif

fromPersistValues [a, b, c, d, e] =
PersistentSession
Expand Down

0 comments on commit 777261a

Please sign in to comment.