mirror of
https://github.com/Airsequel/AirGQL.git
synced 2025-07-11 01:14:54 +03:00
46 lines
1 KiB
Haskell
46 lines
1 KiB
Haskell
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
|
|
|
|
{-# HLINT ignore "Use maybe" #-}
|
|
{-# HLINT ignore "Avoid lambda" #-}
|
|
{-# HLINT ignore "Replace case with maybe" #-}
|
|
|
|
module AirGQL.Servant.Database (
|
|
apiDatabaseSchemaGetHandler,
|
|
apiDatabaseVacuumPostHandler,
|
|
) where
|
|
|
|
import Protolude (
|
|
Applicative (pure),
|
|
MonadIO (liftIO),
|
|
Monoid (mempty),
|
|
($),
|
|
)
|
|
|
|
import Data.Aeson (Object)
|
|
import Data.Text (Text)
|
|
import Database.SQLite.Simple qualified as SS
|
|
import Servant.Server qualified as Servant
|
|
|
|
import AirGQL.ExternalAppContext (ExternalAppContext)
|
|
import AirGQL.Utils (
|
|
getMainDbPath,
|
|
runSqliteCommand,
|
|
withRetryConn,
|
|
)
|
|
|
|
|
|
apiDatabaseSchemaGetHandler
|
|
:: ExternalAppContext
|
|
-> Text
|
|
-> Servant.Handler Text
|
|
apiDatabaseSchemaGetHandler ctx dbId = do
|
|
runSqliteCommand ctx (getMainDbPath dbId) ".schema"
|
|
|
|
|
|
apiDatabaseVacuumPostHandler
|
|
:: Text
|
|
-> Servant.Handler Object
|
|
apiDatabaseVacuumPostHandler dbId = do
|
|
liftIO $ withRetryConn (getMainDbPath dbId) $ \conn ->
|
|
SS.execute_ conn "VACUUM"
|
|
pure mempty
|