package ui import "git.warky.dev/wdevs/relspecgo/pkg/models" // Column data operations - business logic for column management // CreateColumn creates a new column and adds it to a table func (se *SchemaEditor) CreateColumn(schemaIndex, tableIndex int, name, dataType string, isPrimaryKey, isNotNull bool) *models.Column { table := se.GetTable(schemaIndex, tableIndex) if table == nil { return nil } if table.Columns == nil { table.Columns = make(map[string]*models.Column) } newColumn := &models.Column{ Name: name, Type: dataType, IsPrimaryKey: isPrimaryKey, NotNull: isNotNull, } table.UpdateDate() table.Columns[name] = newColumn return newColumn } // UpdateColumn updates an existing column's properties func (se *SchemaEditor) UpdateColumn(schemaIndex, tableIndex int, oldName, newName, dataType string, isPrimaryKey, isNotNull bool, defaultValue interface{}, description string) bool { table := se.GetTable(schemaIndex, tableIndex) if table == nil { return false } column, exists := table.Columns[oldName] if !exists { return false } table.UpdateDate() // If name changed, remove old entry and create new one if oldName != newName { delete(table.Columns, oldName) column.Name = newName table.Columns[newName] = column } // Update properties column.Type = dataType column.IsPrimaryKey = isPrimaryKey column.NotNull = isNotNull column.Default = defaultValue column.Description = description return true } // DeleteColumn removes a column from a table func (se *SchemaEditor) DeleteColumn(schemaIndex, tableIndex int, columnName string) bool { table := se.GetTable(schemaIndex, tableIndex) if table == nil { return false } if _, exists := table.Columns[columnName]; !exists { return false } table.UpdateDate() delete(table.Columns, columnName) return true } // GetColumn returns a column by name func (se *SchemaEditor) GetColumn(schemaIndex, tableIndex int, columnName string) *models.Column { table := se.GetTable(schemaIndex, tableIndex) if table == nil { return nil } return table.Columns[columnName] } // GetAllColumns returns all columns in a table func (se *SchemaEditor) GetAllColumns(schemaIndex, tableIndex int) map[string]*models.Column { table := se.GetTable(schemaIndex, tableIndex) if table == nil { return nil } return table.Columns }