Learn R Programming

ODataQuery (version 0.5.3)

ODataQuery: ODataQuery

Description

R6 class that represents an OData query

Arguments

Active bindings

url

Generate (encoded) url

Methods

Public methods

Method new()

Create a class representing a query.

Usage

ODataQuery$new(
  service,
  .resource = "",
  .query_options = list(),
  httr_args = list()
)

Arguments

service

The url of the endpoint to connect to. This url should not end with backslash.

.resource

Should not be used directly. Use $path() instead.

.query_options

Should not be used directly. Use methods such as $select(), $filter() and $query() instead.

httr_args

Additional parameters to pass to httr::GET

value

Read-only

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")

Method print()

Print query, useful when debugging.

Usage

ODataQuery$print(top = 0, ...)

Arguments

top

Number of records to print.

...

Additional parameters are passed to print

Examples

\dontrun{
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
service$print(10)$path("People")$print()
}

Method path()

Supply path to the resource

Usage

ODataQuery$path(...)

Arguments

...

Components that lead to resource path

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")

Method get()

Query an individual record by ID parameters

Usage

ODataQuery$get(...)

Arguments

...

ID-parameters (named or unnamed)

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
russellwhyte <- people_entity$get("russellwhyte")

Method func()

Path to an OData function

Usage

ODataQuery$func(fname, ...)

Arguments

fname

Name of the function

...

Options passed to retrieve_data

Returns

closure

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
get_nearest_airport <- service$func('GetNearestAirport')
\dontrun{
get_nearest_airport(lat = 33, lon = -118)
}

Method query()

Supply custom query options that do not start with $

Usage

ODataQuery$query(...)

Arguments

...

Named lists where the names are custom query options

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$query(filter = "FirstName eq 'scott'")$url

Method top()

Limit the number of results to n

Usage

ODataQuery$top(n = 10)

Arguments

n

Number of records to return at most

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$top(10)

Method skip()

Skip first few items

Usage

ODataQuery$skip(n = 10)

Arguments

n

Number of items to skip

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$skip(10)

Method select()

Select fields. If not present, all fields are returned.

Usage

ODataQuery$select(...)

Arguments

...

Fields to select

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$select("FirstName", "LastName")

Method filter()

Apply filter to result

Usage

ODataQuery$filter(...)

Arguments

...

Can be a raw odata query or query options. It's recommended to use query options because these will automatically escape parameters. The parameters are passed on to and_query.

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$filter(FirstName.eq = 'Scott')

Method expand()

Expand on expansion properties

Usage

ODataQuery$expand(...)

Arguments

...

Properties to extend on

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$expand("Friends")

Method orderby()

Order results by one or more keys

Usage

ODataQuery$orderby(...)

Arguments

...

Keys to order by. To order in descending order, the key can be prefixed by a negative sign.

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$orderby('Concurrency')
people_entity$orderby('-Concurrency')

Method search()

Search the entity

Usage

ODataQuery$search(s)

Arguments

s

Search string as defined by the endpoint.

Examples

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$search('Boise')

Method compute()

Compute properties

Add additional properties to query computed from other attributes.

Usage

ODataQuery$compute(...)

Arguments

...

Named list of properties to compute

Examples

# Not really supported by this particular service.
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$compute(a = "5 MUL Concurrency")

Method retrieve()

Retrieve data

Usage

ODataQuery$retrieve(count = FALSE, ...)

Arguments

count

Whether to include a count of the total number of records

...

Passed to retrieve_data

Examples

\dontrun{
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity$retrieve()
}

Method all()

Retrieve all data pages

Return concatenation of value of all pages

Usage

ODataQuery$all(...)

Arguments

...

Passed to retrieve_all

Examples

\dontrun{
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity$all()
people_entity$all(jsonlite_args = list(simplifyVector = False))
}

Method one()

Retrieve individual

Usage

ODataQuery$one(...)

Arguments

...

Passed to retrieve_one

Examples

\dontrun{
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity$top(1)$one(default = NA)
}

Details

This class has methods to build and navigate OData services:

  • Use methods such as $path() and $get() to find a path.

  • Use methods such as $select() and $filter() to make your query.

  • Use methods such as $retrieve(), $all() and $one() to obtain the results.

See Also

and_query() for details.

Examples

Run this code
# NOT RUN {
## ------------------------------------------------
## Method `ODataQuery$new`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")

## ------------------------------------------------
## Method `ODataQuery$print`
## ------------------------------------------------

# }
# NOT RUN {
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
service$print(10)$path("People")$print()
# }
# NOT RUN {
## ------------------------------------------------
## Method `ODataQuery$path`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")

## ------------------------------------------------
## Method `ODataQuery$get`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
russellwhyte <- people_entity$get("russellwhyte")

## ------------------------------------------------
## Method `ODataQuery$func`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
get_nearest_airport <- service$func('GetNearestAirport')
# }
# NOT RUN {
get_nearest_airport(lat = 33, lon = -118)
# }
# NOT RUN {
## ------------------------------------------------
## Method `ODataQuery$query`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$query(filter = "FirstName eq 'scott'")$url

## ------------------------------------------------
## Method `ODataQuery$top`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$top(10)

## ------------------------------------------------
## Method `ODataQuery$skip`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$skip(10)

## ------------------------------------------------
## Method `ODataQuery$select`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$select("FirstName", "LastName")

## ------------------------------------------------
## Method `ODataQuery$filter`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$filter(FirstName.eq = 'Scott')

## ------------------------------------------------
## Method `ODataQuery$expand`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$expand("Friends")

## ------------------------------------------------
## Method `ODataQuery$orderby`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$orderby('Concurrency')
people_entity$orderby('-Concurrency')

## ------------------------------------------------
## Method `ODataQuery$search`
## ------------------------------------------------

service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$search('Boise')

## ------------------------------------------------
## Method `ODataQuery$compute`
## ------------------------------------------------

# Not really supported by this particular service.
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity <- service$path("People")
people_entity$compute(a = "5 MUL Concurrency")

## ------------------------------------------------
## Method `ODataQuery$retrieve`
## ------------------------------------------------

# }
# NOT RUN {
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity$retrieve()
# }
# NOT RUN {
## ------------------------------------------------
## Method `ODataQuery$all`
## ------------------------------------------------

# }
# NOT RUN {
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity$all()
people_entity$all(jsonlite_args = list(simplifyVector = False))
# }
# NOT RUN {
## ------------------------------------------------
## Method `ODataQuery$one`
## ------------------------------------------------

# }
# NOT RUN {
service <- ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
people_entity$top(1)$one(default = NA)
# }

Run the code above in your browser using DataLab