{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE FlexibleInstances #-} module Thermoprint.Server.Database ( Job(..), JobId , Draft(..), DraftId , Key(..) , migrateAll , castId' ) where import Control.DeepSeq import Thermoprint.API (Printout, DraftTitle, JobStatus, castId) import Database.Persist.TH import Database.Persist.Sql (unSqlBackendKey, SqlBackend) import Database.Persist.Class (Key, BackendKey) import Thermoprint.Server.Database.Instances share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase| Job content Printout Draft title DraftTitle Maybe content Printout |] instance NFData (Key Job) where rnf = rnf . unSqlBackendKey . unJobKey castId' :: Enum b => BackendKey SqlBackend -> b castId' = castId . unSqlBackendKey