* Add schema management screen with list and editor * Implement table management screen with list and editor * Create data operations for schema and table management * Define UI rules and guidelines for consistency * Ensure circular tab navigation and keyboard shortcuts * Add forms for creating and editing schemas and tables * Implement confirmation dialogs for destructive actions
56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package ui
|
|
|
|
import "git.warky.dev/wdevs/relspecgo/pkg/models"
|
|
|
|
// Schema data operations - business logic for schema management
|
|
|
|
// CreateSchema creates a new schema and adds it to the database
|
|
func (se *SchemaEditor) CreateSchema(name, description string) *models.Schema {
|
|
newSchema := &models.Schema{
|
|
Name: name,
|
|
Description: description,
|
|
Tables: make([]*models.Table, 0),
|
|
Sequences: make([]*models.Sequence, 0),
|
|
Enums: make([]*models.Enum, 0),
|
|
}
|
|
se.db.UpdateDate()
|
|
se.db.Schemas = append(se.db.Schemas, newSchema)
|
|
return newSchema
|
|
}
|
|
|
|
// UpdateSchema updates an existing schema's properties
|
|
func (se *SchemaEditor) UpdateSchema(schemaIndex int, name, owner, description string) {
|
|
if schemaIndex < 0 || schemaIndex >= len(se.db.Schemas) {
|
|
return
|
|
}
|
|
se.db.UpdateDate()
|
|
schema := se.db.Schemas[schemaIndex]
|
|
schema.Name = name
|
|
schema.Owner = owner
|
|
schema.Description = description
|
|
schema.UpdateDate()
|
|
}
|
|
|
|
// DeleteSchema removes a schema from the database
|
|
func (se *SchemaEditor) DeleteSchema(schemaIndex int) bool {
|
|
if schemaIndex < 0 || schemaIndex >= len(se.db.Schemas) {
|
|
return false
|
|
}
|
|
se.db.UpdateDate()
|
|
se.db.Schemas = append(se.db.Schemas[:schemaIndex], se.db.Schemas[schemaIndex+1:]...)
|
|
return true
|
|
}
|
|
|
|
// GetSchema returns a schema by index
|
|
func (se *SchemaEditor) GetSchema(schemaIndex int) *models.Schema {
|
|
if schemaIndex < 0 || schemaIndex >= len(se.db.Schemas) {
|
|
return nil
|
|
}
|
|
return se.db.Schemas[schemaIndex]
|
|
}
|
|
|
|
// GetAllSchemas returns all schemas
|
|
func (se *SchemaEditor) GetAllSchemas() []*models.Schema {
|
|
return se.db.Schemas
|
|
}
|