yam-web 0.3.2 → 0.3.3
raw patch · 4 files changed
+48/−3 lines, 4 filesdep +persistentdep +persistent-templatedep +time
Dependencies added: persistent, persistent-template, time
Files
- demo/Main.hs +3/−0
- demo/Model.hs +32/−0
- src/Yam/Web.hs +7/−0
- yam-web.cabal +6/−3
demo/Main.hs view
@@ -1,5 +1,7 @@ module Main where +import Model+ import Yam.Logger import Yam.Transaction import Yam.Web@@ -40,4 +42,5 @@ main = do ys <- defaultYamSettings logger (loggers ys) INFO (toLogStr (show ys) <> "\n")+ runDbIO ys migrateSql runServer ys (Proxy :: Proxy UserApi) (userService :<|> errorService :<|> servantService :<|> dbService)
+ demo/Model.hs view
@@ -0,0 +1,32 @@+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}++module Model where++import Yam.Transaction++import Control.Monad.IO.Class (MonadIO)+import Data.Text (Text)+import Data.Time.Clock (UTCTime)+import Database.Persist.Sql+import Database.Persist.TH++share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|+EntityAlert json sql=t_alert+ key Text+ result Text+ notifyKey Text Maybe+ alert Bool+ createTime UTCTime+ deriving Show++EntityAlertNotification json sql=t_alert_notification+ notifyKey Text+ key Text+ alertId EntityAlertId+ createTime UTCTime+ EntityAlertNotificationUniqueKey notifyKey key+|]++migrateSql :: MonadIO m => Transaction m ()+migrateSql = runMigration migrateAll
src/Yam/Web.hs view
@@ -8,6 +8,7 @@ , Yam , defaultYamSettings , runDb+ , runDbIO , runServer ) where @@ -24,6 +25,7 @@ import Control.Exception (finally, throw) import Control.Monad.IO.Unlift import Control.Monad.Trans.Except (runExceptT)+import Control.Monad.Trans.Reader (ReaderT, runReaderT) import Data.Aeson import Data.Default import Data.Monoid ((<>))@@ -90,6 +92,11 @@ case dataSources of Nothing -> error $ "Datasource disabled" Just ds -> runTrans ds r++runDbIO :: YamSettings -> Transaction (ReaderT LoggerConfig IO) () -> IO ()+runDbIO YamSettings{..} r = case dataSources of+ Nothing -> return ()+ Just v -> runReaderT (runTrans v r) loggers runServer :: (HasSwagger api, HasServer api '[YamSettings]) => YamSettings -> Proxy api -> ServerT api Yam -> IO () runServer ys@YamSettings{..} p a = run port (mkServeWithSwagger p Proxy (ys :. EmptyContext) Proxy ys middlewares swaggers a) `finally` go loggers dataSources
yam-web.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 0b72633679c8414dad55b9d67c58c29ccc14a7bcda4fb05be0e849f4163e17a0+-- hash: 90996c2a545d34b4c05940d0cfe69fec3a74b8b3a610f6fad37ef445c7f03da8 name: yam-web-version: 0.3.2+version: 0.3.3 synopsis: Yam Web description: base web module for yam category: Project@@ -59,7 +59,7 @@ executable yam-web main-is: Main.hs other-modules:- Paths_yam_web+ Model hs-source-dirs: demo default-extensions: AutoDeriveTypeable BangPatterns BinaryLiterals ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DuplicateRecordFields DoAndIfThenElse EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MonadFailDesugaring MultiParamTypeClasses MultiWayIf NamedFieldPuns OverloadedStrings PartialTypeSignatures PatternGuards PolyKinds RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns@@ -69,6 +69,8 @@ , base >=4.7 && <5 , data-default , lens+ , persistent+ , persistent-template , reflection , servant-server , servant-swagger@@ -76,6 +78,7 @@ , string-conversions , swagger2 , text+ , time , transformers , unliftio-core , vault