A middleware translates graphql to odata
- handling entityset queries
- handling functions and actions
- handling variables
- translate to $expand, query fields that have selection sets
- translate updates to patch http method (not post)
- translate deletes to delete http method (not post)
- translating fragments
- generate custom filtering options per field e.g. for playground and hasura
- response pipeline to reformat odata response to graphql response
- generate graphql schema from odata schema to allow graphql introspection by tools like graphiql
- handling nav props - single/multi/complex type using direct nav syntax e.g. /Customers(1)/Trips(1)/
- order by
- casting derived types
- aggregations (count, sum)
- filter on nav props
- using bulk operations for insert/update/delete