@@ -100,16 +100,27 @@ class IntersectsIndexFilter extends SpatialFilter {
100100}
101101
102102///@nodoc
103- class WithinFilter extends Filter implements FlattenableFilter {
103+ class WithinFilter extends NitriteFilter implements FlattenableFilter {
104104 final String field;
105105 final Geometry geometry;
106106
107107 WithinFilter (this .field, this .geometry);
108108
109109 @override
110110 bool apply (Document doc) {
111- // This should not be called directly as the filter is flattened
112- return false ;
111+ // For non-indexed queries, apply the validation filter directly
112+ var validationFilter = _GeometryValidationFilter (
113+ field,
114+ geometry,
115+ (docGeom, filterGeom) => docGeom.within (filterGeom),
116+ );
117+ // Copy context if available
118+ if (nitriteConfig != null ) {
119+ validationFilter.nitriteConfig = nitriteConfig;
120+ validationFilter.collectionName = collectionName;
121+ validationFilter.objectFilter = objectFilter;
122+ }
123+ return validationFilter.apply (doc);
113124 }
114125
115126 @override
@@ -132,16 +143,27 @@ class WithinFilter extends Filter implements FlattenableFilter {
132143}
133144
134145///@nodoc
135- class IntersectsFilter extends Filter implements FlattenableFilter {
146+ class IntersectsFilter extends NitriteFilter implements FlattenableFilter {
136147 final String field;
137148 final Geometry geometry;
138149
139150 IntersectsFilter (this .field, this .geometry);
140151
141152 @override
142153 bool apply (Document doc) {
143- // This should not be called directly as the filter is flattened
144- return false ;
154+ // For non-indexed queries, apply the validation filter directly
155+ var validationFilter = _GeometryValidationFilter (
156+ field,
157+ geometry,
158+ (docGeom, filterGeom) => docGeom.intersects (filterGeom),
159+ );
160+ // Copy context if available
161+ if (nitriteConfig != null ) {
162+ validationFilter.nitriteConfig = nitriteConfig;
163+ validationFilter.collectionName = collectionName;
164+ validationFilter.objectFilter = objectFilter;
165+ }
166+ return validationFilter.apply (doc);
145167 }
146168
147169 @override
@@ -164,7 +186,7 @@ class IntersectsFilter extends Filter implements FlattenableFilter {
164186}
165187
166188///@nodoc
167- class NearFilter extends Filter implements FlattenableFilter {
189+ class NearFilter extends NitriteFilter implements FlattenableFilter {
168190 final String field;
169191 final Geometry circle;
170192 final Coordinate center;
@@ -185,8 +207,15 @@ class NearFilter extends Filter implements FlattenableFilter {
185207
186208 @override
187209 bool apply (Document doc) {
188- // This should not be called directly as the filter is flattened
189- return false ;
210+ // For non-indexed queries, apply the validation filter directly
211+ var validationFilter = _NearValidationFilter (field, center, radius);
212+ // Copy context if available
213+ if (nitriteConfig != null ) {
214+ validationFilter.nitriteConfig = nitriteConfig;
215+ validationFilter.collectionName = collectionName;
216+ validationFilter.objectFilter = objectFilter;
217+ }
218+ return validationFilter.apply (doc);
190219 }
191220
192221 @override
@@ -205,7 +234,7 @@ class NearFilter extends Filter implements FlattenableFilter {
205234}
206235
207236/// Validation filter for near queries that checks actual distance.
208- class _NearValidationFilter extends Filter {
237+ class _NearValidationFilter extends NitriteFilter {
209238 final String field;
210239 final Coordinate center;
211240 final double radius;
0 commit comments