servant-auth-token-persistent-0.4.0.0: src/Servant/Server/Auth/Token/Persistent/Schema.hs
{-# LANGUAGE MagicHash #-}
module Servant.Server.Auth.Token.Persistent.Schema where
import Data.Text
import Data.Time
import Database.Persist.TH
import GHC.Generics
import GHC.Prim
import Servant.API.Auth.Token
import qualified Servant.Server.Auth.Token.Model as M
share [mkPersist sqlSettings
, mkDeleteCascade sqlSettings
, mkMigrate "migrateAll"] [persistLowerCase|
UserImpl
login Login
password Password -- encrypted with salt
email Email
UniqueLogin login
deriving Generic Show
UserPerm
user UserImplId
permission Permission
deriving Generic Show
AuthToken
value SimpleToken
user UserImplId
expire UTCTime
deriving Generic Show
UserRestore
value RestoreCode
user UserImplId
expire UTCTime
deriving Generic Show
UserSingleUseCode
value SingleUseCode
user UserImplId
expire UTCTime Maybe -- Nothing is code that never expires
used UTCTime Maybe
deriving Generic Show
AuthUserGroup
name Text
parent AuthUserGroupId Maybe
deriving Generic Show
AuthUserGroupUsers
group AuthUserGroupId
user UserImplId
deriving Generic Show
AuthUserGroupPerms
group AuthUserGroupId
permission Permission
deriving Generic Show
|]
-- | Defines way to convert from persistent struct to model struct and vice versa.
--
-- Warning: default implementation is done via 'unsafeCoerce#', so make sure that
-- structure of 'a' and 'b' is completely identical.
class ConvertStorage a b | a -> b, b -> a where
-- | Convert to internal representation
convertTo :: b -> a
convertTo = unsafeCoerce#
-- | Convert from internal representation
convertFrom :: a -> b
convertFrom = unsafeCoerce#
instance ConvertStorage UserImpl M.UserImpl
instance ConvertStorage UserPerm M.UserPerm
instance ConvertStorage AuthToken M.AuthToken
instance ConvertStorage UserRestore M.UserRestore
instance ConvertStorage UserSingleUseCode M.UserSingleUseCode
instance ConvertStorage AuthUserGroup M.AuthUserGroup
instance ConvertStorage AuthUserGroupUsers M.AuthUserGroupUsers
instance ConvertStorage AuthUserGroupPerms M.AuthUserGroupPerms
instance ConvertStorage UserImplId M.UserImplId
instance ConvertStorage UserPermId M.UserPermId
instance ConvertStorage AuthTokenId M.AuthTokenId
instance ConvertStorage UserRestoreId M.UserRestoreId
instance ConvertStorage UserSingleUseCodeId M.UserSingleUseCodeId
instance ConvertStorage AuthUserGroupId M.AuthUserGroupId
instance ConvertStorage AuthUserGroupUsersId M.AuthUserGroupUsersId
instance ConvertStorage AuthUserGroupPermsId M.AuthUserGroupPermsId