Struct WorksQuery

Source
pub struct WorksQuery {
    pub free_form_queries: Vec<String>,
    pub field_queries: Vec<FieldQuery>,
    pub filter: Vec<WorksFilter>,
    pub sort: Option<Sort>,
    pub order: Option<Order>,
    pub facets: Vec<FacetCount>,
    pub result_control: Option<WorkResultControl>,
    pub sample: Option<usize>,
}
Expand description

Used to construct a query that targets crossref Works elements

§Example

use crossref::{Order, WorksQuery};

// create a new query for topcis machine+learning ordered desc
let query = WorksQuery::new("machine learning").order(Order::Desc);

Each query parameter is ANDed

Fields§

§free_form_queries: Vec<String>

search by non specific query

§field_queries: Vec<FieldQuery>

match only particular fields of metadata

§filter: Vec<WorksFilter>

filter to apply while querying

§sort: Option<Sort>

sort results by a certain field and

§order: Option<Order>

set the sort order to asc or desc

§facets: Vec<FacetCount>

enable facet information in responses

§result_control: Option<WorkResultControl>

deep page through /works result sets

§sample: Option<usize>

request random dois if set all other parameters are ignored

Implementations§

Source§

impl WorksQuery

Source

pub fn empty() -> Self

alias for creating an empty default element

Source

pub fn random(len: usize) -> Self

creates an new WorksQuery with the desired sample size that will result in a request for random dois

Source

pub fn new<T: ToString>(query: T) -> Self

Convenience method to create a new WorksQuery with a term directly

Source

pub fn sample(self, len: usize) -> Self

add a new free form query

Source

pub fn query<T: ToString>(self, query: T) -> Self

add a new free form query

Source

pub fn queries<T: ToString>(self, queries: &[T]) -> Self

Create a new query for the topics renear+ontologies

§Example
use crossref::WorksQuery;

let query = WorksQuery::default().queries(&["renear", "ontologies"]);

add a bunch of free form query terms

Source

pub fn field_query(self, query: FieldQuery) -> Self

add a new field query form query

Source

pub fn field_queries(self, queries: Vec<FieldQuery>) -> Self

use crossref::{FieldQuery,WorksQuery};

let query = WorksQuery::default().field_queries(vec![FieldQuery::title("room at the bottom"), FieldQuery::author("richard feynman")]);

add a bunch of free form query terms

Source

pub fn filter(self, filter: WorksFilter) -> Self

add a new filter to the query

Source

pub fn sort(self, sort: Sort) -> Self

set sort option to the query

Source

pub fn order(self, order: Order) -> Self

set order option to query

Source

pub fn facet(self, facet: FacetCount) -> Self

add another facet to query

Source

pub fn next_cursor(self, cursor: &str) -> Self

set the cursor for result control deep paging

Source

pub fn new_cursor(self) -> Self

set an empty cursor

Source

pub fn result_control(self, result_control: WorkResultControl) -> Self

set result control option to query

Source

pub fn into_combined<W: WorksCombiner>(self, id: &str) -> W

Wrap the query in a combined query.

§Example

Create a Funders Query that targets all works of a funder with id funder id.

let funders: Funders = WorksQuery::default().into_combined("funder id");
Source

pub fn into_ident(self, id: &str) -> WorksIdentQuery

Bind the query to a specific id of a primary endpoint element

Source

pub fn into_combined_query<W: WorksCombiner>(self, id: &str) -> WorkListQuery

wrap this query in new WorkListQuery that targets the /works route of a primary component with an id. The query will evaluate to the same as [into_combined]

§Example

Create a query that targets all Works of a funder with id funder id

let query = WorksQuery::default()
    .into_combined_query::<Funders>("funder id");

Trait Implementations§

Source§

impl Clone for WorksQuery

Source§

fn clone(&self) -> WorksQuery

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl CrossrefParams for WorksQuery

Source§

type Filter = WorksFilter

the filter applied
Source§

fn query_terms(&self) -> &[String]

all string queries
Source§

fn filters(&self) -> &[Self::Filter]

the filters this object can use
Source§

fn sort(&self) -> Option<&Sort>

the sort if set
Source§

fn order(&self) -> Option<&Order>

the order if set
Source§

fn facets(&self) -> &[FacetCount]

all facets this objects addresses
Source§

fn result_control(&self) -> Option<&ResultControl>

the configured result control, if any
Source§

impl CrossrefRoute for WorksQuery

Source§

fn route(&self) -> Result<String>

constructs the route for the crossref api
Source§

impl Debug for WorksQuery

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for WorksQuery

Source§

fn default() -> WorksQuery

Returns the “default value” for a type. Read more
Source§

impl Into<WorkListQuery> for WorksQuery

Source§

fn into(self) -> WorkListQuery

Converts this type into the (usually inferred) input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Err = <U as TryFrom<T>>::Err

Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Err>

Source§

impl<T> ErasedDestructor for T
where T: 'static,