func()

in internal/database/mysql/mysql.go [135:165]


func (h mysqlHandler) ListColumns(db *database.DB, tableName string) ([]database.ColumnInfo, error) {
	query := fmt.Sprintf("SHOW COLUMNS FROM `%s`;", tableName)

	rows, err := db.Query(query)
	if err != nil {
		return nil, fmt.Errorf("error querying columns for table %s: %w", tableName, err)
	}
	defer rows.Close()

	var columns []database.ColumnInfo // Modified to []database.ColumnInfo
	for rows.Next() {
		var columnDetails struct {
			Field   string      `db:"Field"`
			Type    string      `db:"Type"` // This is the datatype
			Null    string      `db:"Null"`
			Key     string      `db:"Key"`
			Default interface{} `db:"Default"`
			Extra   string      `db:"Extra"`
		}
		if err := rows.Scan(&columnDetails.Field, &columnDetails.Type, &columnDetails.Null, &columnDetails.Key, &columnDetails.Default, &columnDetails.Extra); err != nil {
			return nil, fmt.Errorf("error scanning column details: %w", err)
		}
		columns = append(columns, database.ColumnInfo{Name: columnDetails.Field, DataType: columnDetails.Type}) // Store both name and datatype
	}

	if err := rows.Err(); err != nil {
		return nil, fmt.Errorf("error iterating column rows: %w", err)
	}

	return columns, nil
}