79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package ui
|
|
|
|
import (
|
|
"github.com/gdamore/tcell/v2"
|
|
"github.com/rivo/tview"
|
|
)
|
|
|
|
// showEditDatabaseForm displays a dialog to edit database properties
|
|
func (se *SchemaEditor) showEditDatabaseForm() {
|
|
form := tview.NewForm()
|
|
|
|
dbName := se.db.Name
|
|
dbDescription := se.db.Description
|
|
dbComment := se.db.Comment
|
|
dbType := string(se.db.DatabaseType)
|
|
dbVersion := se.db.DatabaseVersion
|
|
dbGUID := se.db.GUID
|
|
|
|
// Database type options
|
|
dbTypeOptions := []string{"pgsql", "mssql", "sqlite"}
|
|
selectedTypeIndex := 0
|
|
for i, opt := range dbTypeOptions {
|
|
if opt == dbType {
|
|
selectedTypeIndex = i
|
|
break
|
|
}
|
|
}
|
|
|
|
form.AddInputField("Database Name", dbName, 40, nil, func(value string) {
|
|
dbName = value
|
|
})
|
|
|
|
form.AddInputField("Description", dbDescription, 50, nil, func(value string) {
|
|
dbDescription = value
|
|
})
|
|
|
|
form.AddInputField("Comment", dbComment, 50, nil, func(value string) {
|
|
dbComment = value
|
|
})
|
|
|
|
form.AddDropDown("Database Type", dbTypeOptions, selectedTypeIndex, func(option string, index int) {
|
|
dbType = option
|
|
})
|
|
|
|
form.AddInputField("Database Version", dbVersion, 20, nil, func(value string) {
|
|
dbVersion = value
|
|
})
|
|
|
|
form.AddInputField("GUID", dbGUID, 40, nil, func(value string) {
|
|
dbGUID = value
|
|
})
|
|
|
|
form.AddButton("Save", func() {
|
|
if dbName == "" {
|
|
return
|
|
}
|
|
se.updateDatabase(dbName, dbDescription, dbComment, dbType, dbVersion)
|
|
se.db.GUID = dbGUID
|
|
se.pages.RemovePage("edit-database")
|
|
se.pages.RemovePage("main")
|
|
se.pages.AddPage("main", se.createMainMenu(), true, true)
|
|
})
|
|
|
|
form.AddButton("Back", func() {
|
|
se.pages.RemovePage("edit-database")
|
|
})
|
|
|
|
form.SetBorder(true).SetTitle(" Edit Database ").SetTitleAlign(tview.AlignLeft)
|
|
form.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
|
if event.Key() == tcell.KeyEscape {
|
|
se.showExitConfirmation("edit-database", "main")
|
|
return nil
|
|
}
|
|
return event
|
|
})
|
|
|
|
se.pages.AddPage("edit-database", form, true, true)
|
|
}
|