github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/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 }