module IHP.IDE.SchemaDesigner.View.Indexes.Edit where import IHP.ViewPrelude import IHP.IDE.SchemaDesigner.Types import qualified IHP.IDE.SchemaDesigner.Compiler as SqlCompiler import IHP.IDE.ToolServer.Types import IHP.IDE.SchemaDesigner.View.Layout data EditIndexView = EditIndexView { statements :: [Statement] , indexName :: Text , tableName :: Text } instance View EditIndexView where html EditIndexView { .. } = [hsx|
{renderObjectSelector (zip [0..] statements) (Just tableName)} {renderColumnSelector tableName (zip [0..] columns) statements}
{migrationStatus} {renderModal modal} |] where index :: Statement (Just index) = statements |> find \case CreateIndex { indexName = name } | name == indexName -> True otherwise -> False table :: Maybe Statement table = findStatementByName tableName statements columns = maybe [] ((.columns) . unsafeGetCreateTable) table indexColumns = index.columns |> map SqlCompiler.compileIndexColumn |> intercalate ", " modalContent = [hsx|
|] modalFooter = mempty modalCloseUrl = pathTo ShowTableAction { tableName } modalTitle = "Edit Index" modal = Modal { modalContent, modalFooter, modalCloseUrl, modalTitle }