Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for persistent-2.14 to serversession-backend-persistent #39

Merged
merged 2 commits into from
Aug 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 <[email protected]>
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
Loading