odata_query 2.0.0 copy "odata_query: ^2.0.0" to clipboard
odata_query: ^2.0.0 copied to clipboard

OData Query Builder is a simple Dart package for building OData query parameter for your REST API.

OData Query Builder #

pub package

OData Query Builder is a Dart package designed for building OData query strings that you can append to your REST API endpoints. It provides a clean, declarative API to construct complex queries efficiently.

Features #

  • Build Complex OData Queries: Supports all key OData query options, including $filter, $orderby, $select, $expand, $top, $skip, and $count.
  • Programmatic Filter Construction: Allows you to build OData filters with logical operations like eq, lt, gt, and, or, etc.
  • URL Encoding: Automatically encodes query parameters for safe usage in URLs.
  • Map Conversion: Convert query parameters into a Map<String, String> format for added flexibility when integrating with different APIs.
  • OData Query Documentation: For detailed OData query options, refer to OData Query Options Overview.

Example #

import 'package:odata_query/odata_query.dart';

void main() {
  final queryString = ODataQuery(
    filter: Filter.and(
      Filter.eq('Name', 'Milk'),
      Filter.lt('Price', 2.55),
    ),
    orderBy: OrderBy.desc('Price'),
    select: ['Name', 'Price'],
    expand: ['Category'],
    top: 10,
    count: true,
  ).toString();

  print(queryString); 
  // Output:
  // "$filter=Name%20eq%20'Milk'%20and%20Price%20lt%202.55&$orderby=Price%20desc&$select=Name,Price&$expand=Category&$top=10&$count=true"

  final queryMap = ODataQuery(
    search: 'Bakery',
    top: 5,
    skip: 10,
    orderBy: OrderBy.asc('Name'),
  ).toMap();

  print(queryMap); 
  // Output:
  // {
  //   '$search': 'Bakery',
  //   '$orderby': 'Name asc',
  //   '$top': '5',
  //   '$skip': '10'
  // }
}

API Overview #

ODataQuery #

  • search: Free-text search across multiple fields.
  • filter: Allows filtering results based on conditions (e.g., eq, lt, gt).
  • orderBy: Specify sorting (ascending or descending) on one or more fields.
  • select: Select specific fields to reduce payload size.
  • expand: Include related entities in the query response.
  • top: Limit the number of records returned.
  • skip: Skip a specified number of records (used for pagination).
  • count: Whether to include the total count of matching records.

Filter #

  • eq: Equality filter (e.g., Name eq 'Milk').
  • ne: Non-equality filter.
  • lt/gt: Less than / Greater than.
  • le/ge: Less than or equal / Greater than or equal.
  • and/or: Combine filters with logical and or or.

OrderBy #

  • asc: Ascending sort.
  • desc: Descending sort.
4
likes
0
points
196
downloads

Publisher

unverified uploader

Weekly Downloads

OData Query Builder is a simple Dart package for building OData query parameter for your REST API.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on odata_query