packages feed

ihp-ide-1.5.0: IHP/IDE/SchemaDesigner/View/Migrations/New.hs

module IHP.IDE.SchemaDesigner.View.Migrations.New where
import IHP.ViewPrelude
import IHP.IDE.ToolServer.Types
import IHP.IDE.ToolServer.Routes ()
import IHP.IDE.CodeGen.Types

data NewView = NewView { plan :: [GeneratorAction] }

instance View NewView where
    html NewView { .. } = [hsx|
        <div class="container pt-5">
            <h1>New Migration</h1>
            <div class="migration pending">
                {renderForm sqlStatements}
            </div>
        </div>
    |]
        where
            sqlStatements = plan
                |> mapMaybe \case
                    CreateFile { fileContent } -> Just fileContent
                    _ -> Nothing
                |> headMay
                |> fromMaybe ""


renderForm :: Text -> Html
renderForm sqlStatements = [hsx|
<form method="POST" action={CreateMigrationAction}>
    <div class="mb-3" id="form-group-migration_sqlStatements">
        <textarea name="sqlStatements" placeholder="" id="migration_sqlStatements" class="form-control">{sqlStatements}</textarea>
    </div>
    <div id="migration_sqlStatements_ace"/>

    <div class="d-flex">
        <button class="btn btn-primary">
            <span id="addMigrationVerb">Run</span> Migration
        </button>

        <div class="ms-3 d-flex align-items-center">
            <div class="form-check form-switch d-flex align-items-center">
                <input type="checkbox" class="form-check-input" id="createOnlySwitch" name="createOnly" onchange="addMigrationVerb.innerText = this.checked ? 'Add' : 'Run'"/>
                <label class="form-check-label text-muted" for="createOnlySwitch" style="font-size: 14px">Create only, don't run yet</label>
            </div>
        </div>
    </div>
</form>
|]