firestore_query_builder 1.0.0+2 copy "firestore_query_builder: ^1.0.0+2" to clipboard
firestore_query_builder: ^1.0.0+2 copied to clipboard

A handy utility package to build firestore complex query with ease.

firestore_query_builder #

Starware

A handy utility package to build firestore complex queries on firestore collection.

Install #

Add package into your pubspec.yaml file.

	...
	dependencies:
		...
		cloud_firestore: ^2.2.0
		firestore_query_builder: ^1.0.0+2
		...

Usage #

In this package you get a class [FirestoreQueryStructure] where you structure your part of query. And you will get a buildQuery method which will return a well-built firestore query that you can use to get, delete or update your firestore collection.

FirestoreQueryStructure #

This class takes 4 arguments out of which 3 are optional.

FirestoreQueryStructure({
	@required ConditionType conditionType,
	String field,
	dynamic value,
	bool isAscending  =  true,
});
  • conditionType [ConditionType] : It is an enum type where you mention what type of query you want to produce. It could be any out of 22 given types.
    enum  ConditionType {
    isEqualTo,
    isNotEqualTo,
    isLessThan,
    isLessThanOrEqualTo,
    isGreaterThan,
    isGreaterThanOrEqualTo,
    arrayContains,
    arrayContainsAny,
    whereIn,
    whereNotIn,
    isNull,
    isNotNull,
    limit,
    order,
    startAt,
    startAfter,
    endAt,
    endBefore,
    startAfterDocument,
    startAtDocument,
    endAtDocument,
    endBeforeDocument,
    }
    
  • field [String]: You pass the field name that will be used to perform query on specific documents from collection.
  • Value [dynamic]: Pass the value which will correspond to the field while performing query.
  • isAscending [bool]: By default it is set to true. You can set it to false if you want your documents to be ordered in descending order. This argument will not be used until your condition type is ConditionType.order.

buildQuery #

This method will ultimately build you a compound query. It take 2 arguments and returns Query (cloud_firestore class) that you can use to perform any type of query.

	Query buildQuery(
		CollectionReference collectionRef,
		{
			List<FirestoreQueryStructure> structures,
		},
	);

Example #

Let's write a query to get all the documents from users collection where isAdmin is true and order them from new to old joined admin by using created_at field from user document.

	void main() async {
		FirebaseFirestore _firestore = FirebaseFirestore.instance;
		
		CollectionReference _collectionRef = _firestore.collection("users");
		List<FirestoreQueryStructure> _structures = [
			FirestoreQueryStructure(
				conditionType: ConditionType.isEqualTo,
				field: "isAdmin",
				value: true,
			),
			FirestoreQueryStructure(
				conditionType: ConditionType.order,
				field: "created_at",
				isAscending: false,
			)
		];
		
		Query _query = buildQuery(_collectionReference, structures: _structures);
		
		final _querySnapshot = await _query.get();
		_querySnapshot.docs.forEach((DocumentSnapshot document) {
			print(document.data());
		}); 
		
	}

👨‍🦱 Author #

Ashim Upadhaya

🌟 Starware #

firestore_query_builder is a Starware.
This means you're free to use the package, as long as you star its GitHub repository (although it is not compulsory).

16
likes
30
pub points
11%
popularity

Publisher

verified publisheruashim.com.np

A handy utility package to build firestore complex query with ease.

Repository (GitHub)
View/report issues

License

MIT (LICENSE)

Dependencies

cloud_firestore, flutter

More

Packages that depend on firestore_query_builder