packages feed

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 { .. }