From ce45e610a32393c22b67343f01b549f7bb7eaf0c Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 14 Aug 2024 08:12:09 +0200 Subject: [PATCH 1/5] feat(firestore): add samples for sum and average --- .../lib/snippets/firestore.dart | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/packages/firebase_snippets_app/lib/snippets/firestore.dart b/packages/firebase_snippets_app/lib/snippets/firestore.dart index 8929081..0ac2995 100644 --- a/packages/firebase_snippets_app/lib/snippets/firestore.dart +++ b/packages/firebase_snippets_app/lib/snippets/firestore.dart @@ -865,6 +865,52 @@ class FirestoreSnippets extends DocSnippet { // [END count_aggregate_query] } + void aggregationQuery_sum() { + // [START sum_aggregate_collection] + db.collection("users").aggregate(sum("age")).get().then( + (res) => print(res.getAverage("age")), + onError: (e) => print("Error completing: $e"), + ); + // [END sum_aggregate_collection] + } + + void aggregationQuery_sum2() { + // [START sum_aggregate_query] + db + .collection("users") + .where("age", isGreaterThan: 10) + .aggregate(sum("age")) + .get() + .then( + (res) => print(res.getAverage("age")), + onError: (e) => print("Error completing: $e"), + ); + // [END sum_aggregate_query] + } + + void aggregationQuery_average() { + // [START average_aggregate_collection] + db.collection("users").aggregate(average("age")).get().then( + (res) => print(res.getAverage("age")), + onError: (e) => print("Error completing: $e"), + ); + // [END average_aggregate_collection] + } + + void aggregationQuery_average2() { + // [START average_aggregate_query] + db + .collection("users") + .where("age", isGreaterThan: 10) + .aggregate(average("age")) + .get() + .then( + (res) => print(res.getAverage("age")), + onError: (e) => print("Error completing: $e"), + ); + // [END average_aggregate_query] + } + void orderAndLimitData_orderAndLimitData() { // [START order_and_limit_data_order_and_limit_data] final citiesRef = db.collection("cities"); From 5d47bc1d785b2ca70329fbd3e87e828d238391bc Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 3 Oct 2024 08:42:39 +0200 Subject: [PATCH 2/5] add multiple queries --- .../lib/snippets/firestore.dart | 73 +++++++++++-------- 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/packages/firebase_snippets_app/lib/snippets/firestore.dart b/packages/firebase_snippets_app/lib/snippets/firestore.dart index 0ac2995..614d47e 100644 --- a/packages/firebase_snippets_app/lib/snippets/firestore.dart +++ b/packages/firebase_snippets_app/lib/snippets/firestore.dart @@ -823,32 +823,25 @@ 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"), ); @@ -857,8 +850,8 @@ 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"), ); @@ -867,8 +860,8 @@ class FirestoreSnippets extends DocSnippet { void aggregationQuery_sum() { // [START sum_aggregate_collection] - db.collection("users").aggregate(sum("age")).get().then( - (res) => print(res.getAverage("age")), + db.collection("cities").aggregate(sum("population")).get().then( + (res) => print(res.getAverage("population")), onError: (e) => print("Error completing: $e"), ); // [END sum_aggregate_collection] @@ -877,12 +870,12 @@ class FirestoreSnippets extends DocSnippet { void aggregationQuery_sum2() { // [START sum_aggregate_query] db - .collection("users") - .where("age", isGreaterThan: 10) - .aggregate(sum("age")) + .collection("cities") + .where("capital", isEqualTo: true) + .aggregate(sum("population")) .get() .then( - (res) => print(res.getAverage("age")), + (res) => print(res.getAverage("population")), onError: (e) => print("Error completing: $e"), ); // [END sum_aggregate_query] @@ -890,8 +883,8 @@ class FirestoreSnippets extends DocSnippet { void aggregationQuery_average() { // [START average_aggregate_collection] - db.collection("users").aggregate(average("age")).get().then( - (res) => print(res.getAverage("age")), + db.collection("cities").aggregate(average("population")).get().then( + (res) => print(res.getAverage("population")), onError: (e) => print("Error completing: $e"), ); // [END average_aggregate_collection] @@ -900,17 +893,36 @@ class FirestoreSnippets extends DocSnippet { void aggregationQuery_average2() { // [START average_aggregate_query] db - .collection("users") - .where("age", isGreaterThan: 10) - .aggregate(average("age")) + .collection("cities") + .where("capital", isEqualTo: true) + .aggregate(average("population")) .get() .then( - (res) => print(res.getAverage("age")), + (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( + sum("population"), + average("population"), + ) + .get() + .then( + (res) { + 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"); @@ -997,7 +1009,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 // ... From 4adf824916698f741d6ac97b76a3fc6939d9a19e Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 3 Oct 2024 08:45:27 +0200 Subject: [PATCH 3/5] add multiple queries --- .../lib/snippets/firestore.dart | 75 +++++++++++-------- 1 file changed, 45 insertions(+), 30 deletions(-) diff --git a/packages/firebase_snippets_app/lib/snippets/firestore.dart b/packages/firebase_snippets_app/lib/snippets/firestore.dart index 0ac2995..0fd395a 100644 --- a/packages/firebase_snippets_app/lib/snippets/firestore.dart +++ b/packages/firebase_snippets_app/lib/snippets/firestore.dart @@ -823,32 +823,25 @@ 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"), ); @@ -857,8 +850,8 @@ 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"), ); @@ -867,8 +860,8 @@ class FirestoreSnippets extends DocSnippet { void aggregationQuery_sum() { // [START sum_aggregate_collection] - db.collection("users").aggregate(sum("age")).get().then( - (res) => print(res.getAverage("age")), + db.collection("cities").aggregate(sum("population")).get().then( + (res) => print(res.getAverage("population")), onError: (e) => print("Error completing: $e"), ); // [END sum_aggregate_collection] @@ -877,12 +870,12 @@ class FirestoreSnippets extends DocSnippet { void aggregationQuery_sum2() { // [START sum_aggregate_query] db - .collection("users") - .where("age", isGreaterThan: 10) - .aggregate(sum("age")) + .collection("cities") + .where("capital", isEqualTo: true) + .aggregate(sum("population")) .get() .then( - (res) => print(res.getAverage("age")), + (res) => print(res.getAverage("population")), onError: (e) => print("Error completing: $e"), ); // [END sum_aggregate_query] @@ -890,8 +883,8 @@ class FirestoreSnippets extends DocSnippet { void aggregationQuery_average() { // [START average_aggregate_collection] - db.collection("users").aggregate(average("age")).get().then( - (res) => print(res.getAverage("age")), + db.collection("cities").aggregate(average("population")).get().then( + (res) => print(res.getAverage("population")), onError: (e) => print("Error completing: $e"), ); // [END average_aggregate_collection] @@ -900,17 +893,38 @@ class FirestoreSnippets extends DocSnippet { void aggregationQuery_average2() { // [START average_aggregate_query] db - .collection("users") - .where("age", isGreaterThan: 10) - .aggregate(average("age")) + .collection("cities") + .where("capital", isEqualTo: true) + .aggregate(average("population")) .get() .then( - (res) => print(res.getAverage("age")), + (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"); @@ -997,7 +1011,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 // ... From 1d3dc2e20c5252b28747dd62aa4cafe4d82df8ba Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 3 Oct 2024 08:47:53 +0200 Subject: [PATCH 4/5] add commas --- .../firebase_snippets_app/lib/snippets/firestore.dart | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/firebase_snippets_app/lib/snippets/firestore.dart b/packages/firebase_snippets_app/lib/snippets/firestore.dart index 0fd395a..0d29726 100644 --- a/packages/firebase_snippets_app/lib/snippets/firestore.dart +++ b/packages/firebase_snippets_app/lib/snippets/firestore.dart @@ -824,8 +824,9 @@ 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))); + Filter("capital", isEqualTo: true), + Filter("population", isGreaterThan: 1000000), + )); // [END firestore_query_filter_or] } @@ -833,8 +834,10 @@ class FirestoreSnippets extends DocSnippet { // [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)))); + Filter.or( + Filter("capital", isEqualTo: true), + Filter("population", isGreaterThan: 1000000), + ))); // [END firestore_query_filter_or_compound] } From 103ca79f798a9504085552cb594b3fe9b0a14c57 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 3 Oct 2024 08:48:45 +0200 Subject: [PATCH 5/5] more commas --- .../lib/snippets/firestore.dart | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/firebase_snippets_app/lib/snippets/firestore.dart b/packages/firebase_snippets_app/lib/snippets/firestore.dart index 0d29726..504cbb4 100644 --- a/packages/firebase_snippets_app/lib/snippets/firestore.dart +++ b/packages/firebase_snippets_app/lib/snippets/firestore.dart @@ -823,21 +823,26 @@ 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] }