packages feed

ihp-ide-1.4.0: IHP/IDE/Logs/Controller.hs

module IHP.IDE.Logs.Controller where

import IHP.ControllerPrelude
import IHP.IDE.ToolServer.Helper.Controller
import IHP.IDE.ToolServer.Types
import IHP.IDE.Logs.View.Logs
import qualified IHP.IDE.Types as DevServer
import qualified Data.ByteString.Char8 as ByteString
import qualified Data.ByteString.Builder as ByteString
import qualified Control.Concurrent.MVar as MVar

instance Controller LogsController where
    action AppLogsAction = do
        toolServerApp <- fromContext @ToolServerApplication

        standardOutput <- cs . ByteString.unlines . reverse <$> readIORef toolServerApp.appStandardOutput
        errorOutput <- cs . ByteString.unlines . reverse <$> readIORef toolServerApp.appErrorOutput

        render LogsView { .. }

    action PostgresLogsAction = do
        toolServerApp <- fromContext @ToolServerApplication

        standardOutput <- cs . ByteString.toLazyByteString <$> readIORef toolServerApp.postgresStandardOutput
        errorOutput <- cs . ByteString.toLazyByteString <$> readIORef toolServerApp.postgresErrorOutput

        render LogsView { .. }

    action OpenEditorAction = do
        let path = param @Text "path"
        let line = paramOrDefault @Int 0 "line"
        let col = paramOrDefault @Int 0 "col"
        openEditor path line col

        renderPlain ""