build method
Builds the final OData query string by combining all provided options. It constructs a URL-friendly string with encoded values.
Example:
final query = ODataQuery(
filter: Filter.eq('Name', 'Milk'),
orderBy: OrderBy.asc('Price'),
).build();
print(query);
Output: "$filter=Name%20eq%20%27Milk%27&$orderby=Price%20asc"
Implementation
String build() {
final Map<String, String> params = {
if (search case final search?) r'$search': search,
if (filter case final filter?) r'$filter': filter.toString(),
if (orderBy case final orderBy?) r'$orderby': orderBy.toString(),
if (select case final select? when select.isNotEmpty)
r'$select': select.join(','),
if (expand case final expand? when expand.isNotEmpty)
r'$expand': expand.join(','),
if (top case final top?) r'$top': top.toString(),
if (skip case final skip?) r'$skip': skip.toString(),
if (count case final count?) r'$count': count.toString().toLowerCase(),
};
if (params.isEmpty) {
return '';
}
final queryString = params.entries
.map((entry) => '${entry.key}=${Uri.encodeComponent(entry.value)}')
.join('&');
return queryString;
}