module IHP.IDE.Data.View.ShowQuery where import qualified Database.PostgreSQL.Simple as PG import IHP.ViewPrelude import IHP.IDE.ToolServer.Types import IHP.IDE.Data.View.Layout data ShowQueryView = ShowQueryView { queryResult :: Maybe (Either PG.SqlError SqlConsoleResult) , queryText :: Text } instance View ShowQueryView where html ShowQueryView { .. } = [hsx|
{headerNav}
{queryText}
{renderRows}
|] where renderRows = case queryResult of Just ((Right (SelectQueryResult []))) -> [hsx|
The query returned an empty result set.
|] Just (Right (SelectQueryResult rows)) -> [hsx| {tableHead rows} {tableBody rows}
|] Just (Right (InsertOrUpdateResult count)) -> [hsx|
{count} {if count == 1 then "row" :: Text else "rows"} affected.
|] Just (Left sqlError) -> [hsx| |] Nothing -> mempty tableHead rows = [hsx|{forEach (columnNames rows) renderColumnHead}|] renderColumnHead name = [hsx|{name}|] tableBody rows = [hsx|{forEach rows renderRow}|] renderRow fields = [hsx|{forEach fields renderField}|] renderField DynamicField { .. } = [hsx|{sqlValueToText fieldValue}|] columnNames rows = maybe [] (map (.fieldName)) (head rows) showIfNotEmpty :: Text -> ByteString -> Html showIfNotEmpty title = \case "" -> mempty text -> [hsx|
{title}: {text}
|]