ihp-ide-1.4.0: IHP/IDE/SchemaDesigner/Controller/Indexes.hs
module IHP.IDE.SchemaDesigner.Controller.Indexes where
import IHP.ControllerPrelude
import IHP.IDE.ToolServer.Types
import IHP.IDE.SchemaDesigner.View.Indexes.Edit
import IHP.IDE.SchemaDesigner.View.Layout (schemaDesignerLayout)
import IHP.IDE.SchemaDesigner.Controller.Helper
import qualified IHP.IDE.SchemaDesigner.SchemaOperations as SchemaOperations
instance Controller IndexesController where
beforeAction = setLayout schemaDesignerLayout
action EditIndexAction { tableName, indexName } = do
statements <- readSchema
render EditIndexView { .. }
action UpdateIndexAction { tableName, indexName } = do
statements <- readSchema
let options = SchemaOperations.UpdateIndexOptions
{ indexName = indexName
, newIndexName = param "newIndexName"
, indexColumns = param "indexColumns"
}
updateSchema (SchemaOperations.updateIndex options)
redirectTo ShowTableAction { .. }
action CreateIndexAction { tableName, columnName } = do
statements <- readSchema
let options = SchemaOperations.AddIndexOptions { tableName, columnName }
updateSchema (SchemaOperations.addIndex options)
redirectTo ShowTableAction { .. }
action DeleteIndexAction { tableName, indexName } = do
statements <- readSchema
updateSchema (SchemaOperations.deleteIndex indexName)
redirectTo ShowTableAction { .. }