|  | @@ -0,0 +1,35 @@
 | 
	
		
			
				|  |  | +package arango
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import (
 | 
	
		
			
				|  |  | +	"errors"
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Operator error.
 | 
	
		
			
				|  |  | +var (
 | 
	
		
			
				|  |  | +	ErrInvalidSortDirection = errors.New("invalid sort direction")
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +var (
 | 
	
		
			
				|  |  | +	sorts = map[string]string{
 | 
	
		
			
				|  |  | +		// Idempotent
 | 
	
		
			
				|  |  | +		"ASC":  "ASC",
 | 
	
		
			
				|  |  | +		"DESC": "DESC",
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// Compatible with Sort.Direction in github.com/recipeer/go/qs
 | 
	
		
			
				|  |  | +		//
 | 
	
		
			
				|  |  | +		// Although lowercase keywords can be used in AQL, uppercase is favoured for stylistic consistency.
 | 
	
		
			
				|  |  | +		"asc":  "ASC",
 | 
	
		
			
				|  |  | +		"desc": "DESC",
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// ParseSortDirection returns the valid AQL operator for an arbitrary direction string.
 | 
	
		
			
				|  |  | +// This supports different inputs, such as Sort.Direction in github.com/recipeer/go/qs
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +// If the input operator cannot be mapped to AQL, this function returns ErrInvalidSortDirection.
 | 
	
		
			
				|  |  | +func ParseSortDirection(op string) (string, error) {
 | 
	
		
			
				|  |  | +	if sorts[op] == "" {
 | 
	
		
			
				|  |  | +		return "", ErrInvalidSortDirection
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	return sorts[op], nil
 | 
	
		
			
				|  |  | +}
 |