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 }