filterator 0.1.3
filterator: ^0.1.3 copied to clipboard
API Query Builder for Dart – A powerful, flexible library for building structured API queries with filtering, sorting, pagination, and easy conversion to API-specific formats.
example/filterator_example.dart
import 'dart:developer';
import 'package:filterator/filterator.dart';
import 'supy_converter_example.dart';
void main() {
final query = ApiQuery(
/// 🔍 Filtering section: where you define conditions on fields
filtering: and(
filters: [
// ✅ SHORT STYLE: Using the helper function `where(field, op, value)`
where('email', 'contains', '@example.com'),
// ✅ SHORT STYLE: Multiple values
// (e.g., for "in" or "not in" operations)
wheres('status', 'in', ['active', 'pending']),
// ✅ VERBOSE STYLE: Directly constructing the filter object
ApiQueryFilter(
field: 'email',
// Field to filter on
operation: QueryOperation.contains,
// Operation to use (e.g., contains)
value: '@example.com', // Single value
),
ApiQueryFilter(
field: 'status',
operation: QueryOperation.inList, // Use `inList` for multiple values
values: ['active', 'pending'], // Multiple values
),
],
/// 🔁 GROUPING section: Nested filter groups with their own logic
groups: [
or(
filters: [
where('name', 'eq', 'John'), // Name equals "John"
where('name', 'eq', 'Jane'), // OR Name equals "Jane"
],
),
],
),
/// 🔃 ORDERING: Sort the results
ordering: [
ordering('name', 'asc'), // Sort by name in ascending order
],
/// 📄 PAGINATION: Limit number of results per request
paging: paginate(
limit: 20,
offset: 0,
), // Return 20 items starting from index 0
);
log(SupyConverter(query).toQueryParameters().toString());
// final supyConverter = SupyConverter(query);
// final oDataConverter = ODataConverter(query);
// final restApiConverter = ResetApiConverter(query);
//
// print(supyConverter.toRequestBody());
// print(supyConverter.toQueryParameters());
// print(oDataConverter.toRequestBody());
// print(oDataConverter.toQueryParameters());
// print(restApiConverter.toQueryParameters());
}