references property
You can change the Firestore reference.
By specifying multiple items in the array, it is possible to issue and read queries simultaneously.
Implementation
@override
@protected
@mustCallSuper
List<Query<DynamicMap>> get references {
if (parameters.containsKey("key")) {
if (parameters.containsKey("containsAny")) {
final items = parameters["containsAny"]?.split(",") ?? <String>[];
if (items.isNotEmpty) {
final queries = <Query<DynamicMap>>[];
for (var i = 0; i < items.length; i += 10) {
queries.add(
query(
firestore.collection(path.split("?").first),
).where(
parameters["key"]!,
arrayContainsAny: items
.sublist(
i,
min(i + 10, items.length),
)
.map((e) => FirestoreUtility._parse(e))
.toList(),
),
);
}
return queries;
}
} else if (parameters.containsKey("whereIn")) {
final items = parameters["whereIn"]?.split(",") ?? <String>[];
if (items.isNotEmpty) {
final queries = <Query<DynamicMap>>[];
for (var i = 0; i < items.length; i += 10) {
queries.add(
query(
firestore.collection(path.split("?").first),
).where(
parameters["key"]!,
whereIn: items
.sublist(
i,
min(i + 10, items.length),
)
.map((e) => FirestoreUtility._parse(e))
.toList(),
),
);
}
return queries;
}
} else if (parameters.containsKey("whereNotIn")) {
final items = parameters["whereNotIn"]?.split(",") ?? <String>[];
if (items.isNotEmpty) {
final queries = <Query<DynamicMap>>[];
for (var i = 0; i < items.length; i += 10) {
queries.add(
query(
firestore.collection(path.split("?").first),
).where(
parameters["key"]!,
whereIn: items
.sublist(
i,
min(i + 10, items.length),
)
.map((e) => FirestoreUtility._parse(e))
.toList(),
),
);
}
return queries;
}
} else if (parameters.containsKey("geoHash")) {
final items = parameters["geoHash"]?.split(",") ?? <String>[];
if (items.isNotEmpty) {
final queries = <Query<DynamicMap>>[];
for (var i = 0; i < items.length; i++) {
final hash = items[i];
queries.add(
query(
firestore.collection(path.split("?").first),
)
.orderBy(parameters["key"]!)
.startAt([hash]).endAt([hash + '\uf8ff']),
);
}
return queries;
}
}
}
return super.references;
}