{-# LANGUAGE BlockArguments #-} {-# LANGUAGE QuasiQuotes #-} module Server.Frontend.Tracker (getTrackerViewR, getTrackersR) where import Data.Coerce (coerce) import Data.Function ((&)) import Data.Functor ((<&>)) import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T import Data.Time (getCurrentTime) import qualified Data.UUID as UUID import Database.Esqueleto.Experimental hiding ((<&>)) import Persist import Server.Frontend.Routes (FrontendMessage (..), Handler, Route (..), Widget) import Yesod hiding (update, (=.), (==.)) import OwnTracks.Status getTrackersR :: Handler Html getTrackersR = do trackers <- runDB $ select do (t :& p) <- from $ (table @Tracker) `LeftOuterJoin` (table @Ping) `on` \(t :& p) -> just (t ^. TrackerId) ==. p ?. PingTrackerId pure (t, p) & fmap associateJoin defaultLayout [whamlet|