github.com/altipla-consulting/ravendb-go-client@v0.1.3/shape_token.go (about)

     1  package ravendb
     2  
     3  import "strings"
     4  
     5  var _ queryToken = &shapeToken{}
     6  
     7  type shapeToken struct {
     8  	shape string
     9  }
    10  
    11  func shapeTokenCircle(radiusParameterName string, latitudeParameterName string, longitudeParameterName string, radiusUnits SpatialUnits) *shapeToken {
    12  	if radiusUnits == "" {
    13  		shape := "spatial.circle($" + radiusParameterName + ", $" + latitudeParameterName + ", $" + longitudeParameterName + ")"
    14  		return &shapeToken{shape: shape}
    15  	}
    16  
    17  	if radiusUnits == SpatialUnitsKilometers {
    18  		shape := "spatial.circle($" + radiusParameterName + ", $" + latitudeParameterName + ", $" + longitudeParameterName + ", 'Kilometers')"
    19  		return &shapeToken{shape: shape}
    20  	}
    21  	shape := "spatial.circle($" + radiusParameterName + ", $" + latitudeParameterName + ", $" + longitudeParameterName + ", 'Miles')"
    22  	return &shapeToken{shape: shape}
    23  }
    24  
    25  func shapeTokenWkt(shapeWktParameterName string) *shapeToken {
    26  	shape := "spatial.wkt($" + shapeWktParameterName + ")"
    27  	return &shapeToken{shape: shape}
    28  }
    29  
    30  func (t *shapeToken) writeTo(writer *strings.Builder) error {
    31  	writer.WriteString(t.shape)
    32  	return nil
    33  }