Skip to content

Commit 7f7d479

Browse files
Copilotanidotnet
andcommitted
Address code review feedback - extract helper method and explicit null checks
Co-authored-by: anidotnet <[email protected]>
1 parent 44fd76d commit 7f7d479

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

packages/nitrite_spatial/lib/src/filter.dart

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@ import 'package:nitrite/nitrite.dart';
33
import 'package:nitrite_spatial/src/geom_utils.dart';
44
import 'package:nitrite_spatial/src/indexer.dart';
55

6+
/// Copies NitriteFilter context (nitriteConfig, collectionName, objectFilter) from source to target
7+
void _copyFilterContext(NitriteFilter source, NitriteFilter target) {
8+
if (source.nitriteConfig != null) {
9+
target.nitriteConfig = source.nitriteConfig;
10+
target.collectionName = source.collectionName;
11+
target.objectFilter = source.objectFilter;
12+
}
13+
}
14+
615
/// The abstract base class for all spatial filters in Nitrite.
716
///
817
/// A spatial filter is used to query Nitrite database for
@@ -63,7 +72,10 @@ class _GeometryValidationFilter extends FieldBasedFilter {
6372
try {
6473
var geometryString = fieldValue['geometry'] as String?;
6574
if (geometryString != null) {
66-
documentGeometry = GeometrySerializer.deserialize(geometryString);
75+
var deserialized = GeometrySerializer.deserialize(geometryString);
76+
if (deserialized != null) {
77+
documentGeometry = deserialized;
78+
}
6779
}
6880
} catch (e) {
6981
return false;
@@ -129,12 +141,7 @@ class WithinFilter extends NitriteFilter implements FlattenableFilter {
129141
geometry,
130142
(docGeom, filterGeom) => docGeom.within(filterGeom),
131143
);
132-
// Copy context if available
133-
if (nitriteConfig != null) {
134-
validationFilter.nitriteConfig = nitriteConfig;
135-
validationFilter.collectionName = collectionName;
136-
validationFilter.objectFilter = objectFilter;
137-
}
144+
_copyFilterContext(this, validationFilter);
138145
return validationFilter.apply(doc);
139146
}
140147

@@ -172,12 +179,7 @@ class IntersectsFilter extends NitriteFilter implements FlattenableFilter {
172179
geometry,
173180
(docGeom, filterGeom) => docGeom.intersects(filterGeom),
174181
);
175-
// Copy context if available
176-
if (nitriteConfig != null) {
177-
validationFilter.nitriteConfig = nitriteConfig;
178-
validationFilter.collectionName = collectionName;
179-
validationFilter.objectFilter = objectFilter;
180-
}
182+
_copyFilterContext(this, validationFilter);
181183
return validationFilter.apply(doc);
182184
}
183185

@@ -224,12 +226,7 @@ class NearFilter extends NitriteFilter implements FlattenableFilter {
224226
bool apply(Document doc) {
225227
// For non-indexed queries, apply the validation filter directly
226228
var validationFilter = _NearValidationFilter(field, center, radius);
227-
// Copy context if available
228-
if (nitriteConfig != null) {
229-
validationFilter.nitriteConfig = nitriteConfig;
230-
validationFilter.collectionName = collectionName;
231-
validationFilter.objectFilter = objectFilter;
232-
}
229+
_copyFilterContext(this, validationFilter);
233230
return validationFilter.apply(doc);
234231
}
235232

@@ -278,7 +275,10 @@ class _NearValidationFilter extends NitriteFilter {
278275
try {
279276
var geometryString = fieldValue['geometry'] as String?;
280277
if (geometryString != null) {
281-
documentGeometry = GeometrySerializer.deserialize(geometryString);
278+
var deserialized = GeometrySerializer.deserialize(geometryString);
279+
if (deserialized != null) {
280+
documentGeometry = deserialized;
281+
}
282282
}
283283
} catch (e) {
284284
return false;

0 commit comments

Comments
 (0)