Skip to content

feat(firestore): add samples for sum and average #37

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Oct 9, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 87 additions & 18 deletions packages/firebase_snippets_app/lib/snippets/firestore.dart
Original file line number Diff line number Diff line change
Expand Up @@ -823,32 +823,33 @@ class FirestoreSnippets extends DocSnippet {

void filterQuery_or() {
// [START firestore_query_filter_or]
var query = db.collection("cities")
.where(
Filter.or(
Filter("capital", isEqualTo: true),
Filter("population", isGreaterThan: 1000000)
));
var query = db.collection("cities").where(
Filter.or(
Filter("capital", isEqualTo: true),
Filter("population", isGreaterThan: 1000000),
),
);
// [END firestore_query_filter_or]
}

void filterQuery_or2() {
// [START firestore_query_filter_or_compound]
var query = db.collection("cities")
.where(
Filter.and(
Filter("state", isEqualTo: "CA"),
Filter.or(
Filter("capital", isEqualTo: true),
Filter("population", isGreaterThan: 1000000)
)));
var query = db.collection("cities").where(
Filter.and(
Filter("state", isEqualTo: "CA"),
Filter.or(
Filter("capital", isEqualTo: true),
Filter("population", isGreaterThan: 1000000),
),
),
);
// [END firestore_query_filter_or_compound]
}

void aggregationQuery_count() {
// [START count_aggregate_collection]
// Returns number of documents in users collection
db.collection("users").count().get().then(
db.collection("cities").count().get().then(
(res) => print(res.count),
onError: (e) => print("Error completing: $e"),
);
Expand All @@ -857,14 +858,81 @@ class FirestoreSnippets extends DocSnippet {

void aggregationQuery_count2() {
// [START count_aggregate_query]
// This also works with collectionGroup queries.
db.collection("users").where("age", isGreaterThan: 10).count().get().then(
// This also works with collection queries.
db.collection("cities").where("capital", isEqualTo: 10).count().get().then(
(res) => print(res.count),
onError: (e) => print("Error completing: $e"),
);
// [END count_aggregate_query]
}

void aggregationQuery_sum() {
// [START sum_aggregate_collection]
db.collection("cities").aggregate(sum("population")).get().then(
(res) => print(res.getAverage("population")),
onError: (e) => print("Error completing: $e"),
);
// [END sum_aggregate_collection]
}

void aggregationQuery_sum2() {
// [START sum_aggregate_query]
db
.collection("cities")
.where("capital", isEqualTo: true)
.aggregate(sum("population"))
.get()
.then(
(res) => print(res.getAverage("population")),
onError: (e) => print("Error completing: $e"),
);
// [END sum_aggregate_query]
}

void aggregationQuery_average() {
// [START average_aggregate_collection]
db.collection("cities").aggregate(average("population")).get().then(
(res) => print(res.getAverage("population")),
onError: (e) => print("Error completing: $e"),
);
// [END average_aggregate_collection]
}

void aggregationQuery_average2() {
// [START average_aggregate_query]
db
.collection("cities")
.where("capital", isEqualTo: true)
.aggregate(average("population"))
.get()
.then(
(res) => print(res.getAverage("population")),
onError: (e) => print("Error completing: $e"),
);
// [END average_aggregate_query]
}

void multipleAggregateQueries() {
// [START multiple_aggregate_queries]
db
.collection("cities")
.aggregate(
count(),
sum("population"),
average("population"),
)
.get()
.then(
(res) {
print(res.count);
print(res.getSum("population"));
print(res.getAverage("population"));
},
onError: (e) => print("Error completing: $e"),
);
// [END multiple_aggregate_queries]
}

void orderAndLimitData_orderAndLimitData() {
// [START order_and_limit_data_order_and_limit_data]
final citiesRef = db.collection("cities");
Expand Down Expand Up @@ -951,7 +1019,8 @@ class FirestoreSnippets extends DocSnippet {
final next = db
.collection("cities")
.orderBy("population")
.startAfterDocument(lastVisible).limit(25);
.startAfterDocument(lastVisible)
.limit(25);

// Use the query for pagination
// ...
Expand Down
Loading