Consider the example: the application displays a list of folders; when a user selects a folder, the application downloads a list of files stored in that folder and presents it to the user. Downloading the list of files can be implemented in the following
NSString *queryString = @"Folders('FOLDER_ID')/Documents";
QueryOperationResponse *response = [self.dataSource execute:queryString];
In my application, there are many cases similar to this, and I have to write a query builder that builds query strings like "Folders('FOLDER_ID')/Documents".
There is also another way to query the list of files:
DataServiceQuery *query = [self.dataSource folders];
[query filter: @"Id eq 'FOLDER_ID'", self.savedDocumentsFolderId];
QueryOperationResponse *response = [query execute];
But developers who work with the service say that it results in additional INNER JOIN in their SQL queries, and it may affect performance.
It would be nice to have a feature that is capable of building complex queries such as "Folders('FOLDER_ID')/Documents" or "FolderDocumentItems('FOLDER_ID;DOCUMENT_ID')".