module IHP.IDE.SchemaDesigner.View.Policies.Edit where
import IHP.ViewPrelude
import IHP.IDE.SchemaDesigner.Types
import qualified IHP.IDE.SchemaDesigner.Compiler as Compiler
import IHP.IDE.ToolServer.Types
import IHP.IDE.SchemaDesigner.View.Layout
data EditPolicyView = EditPolicyView
{ statements :: [Statement]
, tableName :: Text
, columns :: [Column]
, policy :: Statement
}
instance View EditPolicyView where
html EditPolicyView { .. } = [hsx|
{renderObjectSelector (zip [0..] statements) (Just tableName)}
{renderColumnSelector tableName (zip [0..] columns) statements}
{migrationStatus}
{renderModal modal}
|]
where
modalContent = [hsx|
|]
modalFooter = mempty
modalCloseUrl = pathTo ShowTableAction { tableName }
modalTitle = "Edit Policy"
modal = Modal { modalContent, modalFooter, modalCloseUrl, modalTitle }
using = policy.using
|> maybe "" Compiler.compileExpression
check = policy.check
|> maybe "" Compiler.compileExpression
autocompleteSuggestions =
columns
|> map (.name)
|> intercalate ","