package models import ( "time" ) // QueryHistory represents a record of executed queries type QueryHistory struct { ID uint `gorm:"primaryKey" json:"id"` ConnectionID string `gorm:"type:varchar(36);not null;index" json:"connection_id"` SQL string `gorm:"type:text;not null" json:"sql"` Duration int64 `gorm:"type:bigint" json:"duration_ms"` // Duration in milliseconds ExecutedAt time.Time `gorm:"autoCreateTime;index" json:"executed_at"` RowsAffected int64 `gorm:"type:bigint" json:"rows_affected"` Error string `gorm:"type:text" json:"error,omitempty"` Success bool `gorm:"type:boolean;default:false" json:"success"` ResultPreview string `gorm:"type:text" json:"result_preview,omitempty"` // JSON preview of first few rows } // TableName returns the table name for QueryHistory func (QueryHistory) TableName() string { return "query_history" } // SavedQuery represents a saved SQL query type SavedQuery struct { ID uint `gorm:"primaryKey" json:"id"` Name string `gorm:"type:varchar(255);not null" json:"name"` Description string `gorm:"type:text" json:"description"` SQL string `gorm:"type:text;not null" json:"sql"` ConnectionID string `gorm:"type:varchar(36);index" json:"connection_id"` Tags string `gorm:"type:text" json:"tags"` // Comma-separated tags CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"` UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"` } // TableName returns the table name for SavedQuery func (SavedQuery) TableName() string { return "saved_queries" } // CreateSavedQueryRequest represents a request to save a query type CreateSavedQueryRequest struct { Name string `json:"name" binding:"required"` Description string `json:"description"` SQL string `json:"sql" binding:"required"` ConnectionID string `json:"connection_id"` Tags string `json:"tags"` } // UpdateSavedQueryRequest represents a request to update a saved query type UpdateSavedQueryRequest struct { Name string `json:"name"` Description string `json:"description"` SQL string `json:"sql"` ConnectionID string `json:"connection_id"` Tags string `json:"tags"` }