github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/spatial_criteria.go (about) 1 package ravendb 2 3 type SpatialCriteria interface { 4 GetShapeToken(addQueryParameter func(interface{}) string) *shapeToken 5 ToQueryToken(fieldName string, addQueryParameter func(interface{}) string) queryToken 6 } 7 8 type SpatialCriteriaCommon struct { 9 _relation SpatialRelation 10 _distanceErrorPct float64 11 } 12 13 func NewSpatialCriteria(relation SpatialRelation, distanceErrorPct float64) SpatialCriteriaCommon { 14 return SpatialCriteriaCommon{ 15 _relation: relation, 16 _distanceErrorPct: distanceErrorPct, 17 } 18 } 19 20 // Note: hacky way to emulate Java's inheritance 21 func (c *SpatialCriteriaCommon) toQueryTokenCommon(sc SpatialCriteria, fieldName string, addQueryParameter func(interface{}) string) queryToken { 22 shapeToken := sc.GetShapeToken(addQueryParameter) 23 24 var whereOperator whereOperator 25 26 switch c._relation { 27 case SpatialRelationWithin: 28 whereOperator = whereOperatorSpatialWithin 29 case SpatialRelationContains: 30 whereOperator = whereOperatorSpatialContains 31 case SpatialRelationDisjoin: 32 whereOperator = whereOperatorSpatialDisjoint 33 case SpatialRelationIntersects: 34 whereOperator = whereOperatorSpatialIntersects 35 default: 36 //throw new IllegalArgumentError(); 37 panicIf(true, "Unknown relation '%s'", c._relation) 38 } 39 40 opts := newWhereOptionsWithTokenAndDistance(shapeToken, c._distanceErrorPct) 41 return createWhereTokenWithOptions(whereOperator, fieldName, "", opts) 42 }