filterator 0.1.3 copy "filterator: ^0.1.3" to clipboard
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());
}
18
likes
160
points
176
downloads

Publisher

verified publishersupy.io

Weekly Downloads

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.

Repository (GitHub)
View/report issues

Topics

#query-builder #query-interface #filtering #pagination

Documentation

API reference

License

MIT (license)

Dependencies

collection, json_annotation

More

Packages that depend on filterator