chore(health): show db time on status page and status time diffs in a human readable format
This commit is contained in:
parent
74f7633837
commit
ab8b17229a
@ -55,6 +55,7 @@ module Database.Esqueleto.Utils
|
|||||||
, day, day', dayMaybe, interval, diffDays, diffTimes
|
, day, day', dayMaybe, interval, diffDays, diffTimes
|
||||||
, exprLift
|
, exprLift
|
||||||
, explicitUnsafeCoerceSqlExprValue
|
, explicitUnsafeCoerceSqlExprValue
|
||||||
|
, psqlVersion_
|
||||||
, truncateTable
|
, truncateTable
|
||||||
, module Database.Esqueleto.Utils.TH
|
, module Database.Esqueleto.Utils.TH
|
||||||
) where
|
) where
|
||||||
@ -814,6 +815,8 @@ instance (PersistField a1, PersistField a2, PersistField b, Finite a1, Finite a2
|
|||||||
]
|
]
|
||||||
(E.else_ $ E.else_ $ E.veryUnsafeCoerceSqlExprValue (E.nothing :: E.SqlExpr (E.Value (Maybe ()))))
|
(E.else_ $ E.else_ $ E.veryUnsafeCoerceSqlExprValue (E.nothing :: E.SqlExpr (E.Value (Maybe ()))))
|
||||||
|
|
||||||
|
psqlVersion_ :: E.SqlExpr (E.Value Text)
|
||||||
|
psqlVersion_ = E.unsafeSqlFunction "VERSION" ()
|
||||||
|
|
||||||
-- Suspected to cause trouble. Needs more testing!
|
-- Suspected to cause trouble. Needs more testing!
|
||||||
-- truncateTable :: (MonadIO m, BackendCompatible SqlBackend backend, PersistEntity record)
|
-- truncateTable :: (MonadIO m, BackendCompatible SqlBackend backend, PersistEntity record)
|
||||||
|
|||||||
@ -28,7 +28,9 @@ import Text.Hamlet
|
|||||||
-- import Handler.Utils.I18n
|
-- import Handler.Utils.I18n
|
||||||
|
|
||||||
import Handler.Admin.Test.Download (testDownload)
|
import Handler.Admin.Test.Download (testDownload)
|
||||||
|
import qualified Database.Esqueleto.Experimental as E (selectOne, unValue)
|
||||||
|
import qualified Database.Esqueleto.PostgreSQL as E (now_)
|
||||||
|
import qualified Database.Esqueleto.Utils as E (psqlVersion_)
|
||||||
|
|
||||||
-- BEGIN - Buttons needed only here
|
-- BEGIN - Buttons needed only here
|
||||||
data ButtonCreate = CreateMath | CreateInf | CrashApp -- Dummy for Example
|
data ButtonCreate = CreateMath | CreateInf | CrashApp -- Dummy for Example
|
||||||
@ -226,6 +228,9 @@ postAdminTestR = do
|
|||||||
|
|
||||||
UniWorX{ appSettings' = AppSettings{..} } <- getYesod
|
UniWorX{ appSettings' = AppSettings{..} } <- getYesod
|
||||||
|
|
||||||
|
psqlVersion <- runDBRead $ E.selectOne $ return E.psqlVersion_
|
||||||
|
dbTime <- runDBRead $ E.selectOne $ return E.now_
|
||||||
|
|
||||||
let locallyDefinedPageHeading = [whamlet|Admin TestPage for Uni2work|]
|
let locallyDefinedPageHeading = [whamlet|Admin TestPage for Uni2work|]
|
||||||
siteLayout locallyDefinedPageHeading $ do
|
siteLayout locallyDefinedPageHeading $ do
|
||||||
-- defaultLayout $ do
|
-- defaultLayout $ do
|
||||||
@ -327,6 +332,17 @@ postAdminTestR = do
|
|||||||
<dd .deflist__dd>#{tshow appSynchroniseAvsUsersWithin}
|
<dd .deflist__dd>#{tshow appSynchroniseAvsUsersWithin}
|
||||||
|]
|
|]
|
||||||
|
|
||||||
|
[whamlet|
|
||||||
|
<section>
|
||||||
|
<h2> PostgreSQL Information
|
||||||
|
<dl .deflist>
|
||||||
|
$maybe pver <- psqlVersion
|
||||||
|
<dt .deflist__dt>DB Version
|
||||||
|
<dd .deflist__dd>#{E.unValue pver}
|
||||||
|
$maybe ptme <- dbTime
|
||||||
|
<dt .deflist__dt>DB Time
|
||||||
|
<dd .deflist__dd>#{tshow (E.unValue ptme)}
|
||||||
|
|]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,9 @@ import Control.Concurrent.STM.Delay
|
|||||||
|
|
||||||
import System.Environment (lookupEnv) -- while git version number is not working
|
import System.Environment (lookupEnv) -- while git version number is not working
|
||||||
|
|
||||||
|
import qualified Database.Esqueleto.Experimental as E
|
||||||
|
import qualified Database.Esqueleto.PostgreSQL as E (now_)
|
||||||
|
|
||||||
-- import Data.FileEmbed (embedStringFile)
|
-- import Data.FileEmbed (embedStringFile)
|
||||||
|
|
||||||
getHealthR :: Handler TypedContent
|
getHealthR :: Handler TypedContent
|
||||||
@ -114,10 +117,16 @@ getInstanceR = do
|
|||||||
getStatusR :: Handler Html
|
getStatusR :: Handler Html
|
||||||
getStatusR = do
|
getStatusR = do
|
||||||
starttime <- getsYesod appStartTime
|
starttime <- getsYesod appStartTime
|
||||||
(currtime, env_version) <- liftIO $ (,) <$> getCurrentTime <*> lookupEnv "VERSION_NR"
|
dbTime <- runDBRead $ E.selectOne $ return E.now_
|
||||||
|
(currtime,env_version) <- liftIO $ (,) <$> getCurrentTime <*> lookupEnv "VERSION_NR"
|
||||||
-- ft <- formatTime' "%Y-%m-%d %H:%M:%S" currtime
|
-- ft <- formatTime' "%Y-%m-%d %H:%M:%S" currtime
|
||||||
let diffTime :: UTCTime -> Text
|
let diffTime :: UTCTime -> Text
|
||||||
diffTime = pack . iso8601Show . calendarTimeTime . fromIntegral . truncate . diffUTCTime currtime
|
diffTime t =
|
||||||
|
let tdiff = diffUTCTime currtime t
|
||||||
|
in if 64 > abs tdiff
|
||||||
|
then tshow tdiff
|
||||||
|
else pack . iso8601Show . calendarTimeTime . fromIntegral $ truncate tdiff
|
||||||
|
|
||||||
withUrlRenderer
|
withUrlRenderer
|
||||||
[hamlet|
|
[hamlet|
|
||||||
$doctype 5
|
$doctype 5
|
||||||
@ -129,8 +138,13 @@ getStatusR = do
|
|||||||
<p>
|
<p>
|
||||||
Environment version #{env_ver}
|
Environment version #{env_ver}
|
||||||
<p>
|
<p>
|
||||||
Current Time <br>
|
Current Application Time <br>
|
||||||
#{show currtime} <br>
|
#{show currtime} <br>
|
||||||
|
$maybe dbtval <- dbTime
|
||||||
|
$with dbt <- E.unValue dbtval
|
||||||
|
Current Database Time <br>
|
||||||
|
#{show dbt} #
|
||||||
|
Difference: #{diffTime dbt} <br>
|
||||||
<p>
|
<p>
|
||||||
Instance Start <br>
|
Instance Start <br>
|
||||||
#{show starttime} #
|
#{show starttime} #
|
||||||
|
|||||||
Reference in New Issue
Block a user