{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} module TestUtils.ServerDB where import Data.Appendful import Data.Appendful.Persistent import Data.GenValidity import Database.Persist.Sql import Database.Persist.TH import GHC.Generics (Generic) newtype Thing = Thing { thingNumber :: Int } deriving (Show, Eq, Ord, Generic) instance Validity Thing instance GenValid Thing share [mkPersist sqlSettings, mkMigrate "migrateServer"] [persistLowerCase| ServerThing number Int deriving Show deriving Eq deriving Ord deriving Generic |] instance Validity ServerThing instance GenValid ServerThing setupServerThingQuery :: ServerStore ServerThingId Thing -> SqlPersistT IO () setupServerThingQuery = setupServerQuery makeServerThing serverGetStoreThingQuery :: SqlPersistT IO (ServerStore ServerThingId Thing) serverGetStoreThingQuery = serverGetStoreQuery serverMakeThing serverProcessSyncThingQuery :: Ord cid => SyncRequest cid ServerThingId Thing -> SqlPersistT IO (SyncResponse cid ServerThingId Thing) serverProcessSyncThingQuery = serverProcessSyncQuery [] serverMakeThing makeServerThing serverMakeThing :: ServerThing -> Thing serverMakeThing ServerThing {..} = Thing {thingNumber = serverThingNumber} makeServerThing :: Thing -> ServerThing makeServerThing Thing {..} = ServerThing {serverThingNumber = thingNumber}