A request generation utility for the SportDevs APIs.
You can install this library using npm
, it's available as the @sportdevs/endpoint
package.
npm install @sportdevs/endpoint
This library only has a single export called endpoint
which can be used to generate request URLs.
import endpoint from "@sportdevs/endpoint";
// ... or
const endpoint = require("@sportdevs/endpoint").default;
You can chain all the transforms to create a complex query, like this:
endpoint("events")
.property("season_id")
.equals(18820)
.or((obj) =>
obj
.property("away_team_score->current")
.greaterThan(3)
.property("home_team_score->current")
.greaterThan(3)
)
.select("away_team_id", "home_team_id", "away_team_score", "home_team_score")
.order((o) => o.property("id").descending);
// events?season_id=eq.18820&or=(away_team_score->current.gt.3,home_team_score->current.gt.3)&select=away_team_id,home_team_id,away_team_score,home_team_score&order=id.desc
Creates an object that is associated with an endpoint.
endpoint("events");
Turns an endpoint object to a string.
endpoint("events").toString();
Skips value
amount of elements.
endpoint("events").offset(1);
// events?offset=1
Limits the response to value
amount of objects.
endpoint("events").limit(1);
// events?limit=1
Makes the returned object only contain the selected properties.
endpoint("events").select("home_team_id", "away_team_id");
// events?select=home_team_id,away_team_id
All the property transforms can be negated using the
not.
prefix.endpoint("events").property("id").not.lessThan(10); // events?id=not.lt.10
Applies a transform using a property.
endpoint("events").property("id").lessThan(10);
// events?id=lt.10
Checks if a property is equal to value
.
endpoint("events").property("id").equals(10);
// events?id=eq.10
Checks if a property is greater than value
.
endpoint("events").property("id").greaterThan(10);
// events?id=gt.10
Checks if a property is greater than or equal to value
.
endpoint("events").property("id").greaterThanOrEqual(10);
// events?id=gte.10
Checks if a property is less than value
.
endpoint("events").property("id").lessThan(10);
// events?id=lt.10
Checks if a property is less than or equal to value
.
endpoint("events").property("id").lessThanOrEqual(10);
// events?id=lte.10
Checks if a property matches a glob expression.
endpoint("players").property("first_name").like("A*");
// players?first_name=like.A*
Checks if a property matches a glob expression (case insensitive).
endpoint("players").property("first_name").insensitive.like("A*");
// players?first_name=ilike.A*
Checks is a property matches a POSIX regular expression.
endpoint("players").property("first_name").match("^A");
// players?first_name=match.^A
Checks is a property matches a POSIX regular expression.
endpoint("players").property("first_name").insensitive.match("^A");
// players?first_name=imatch.^A
Checks if the property is inside the array value
.
endpoint("events").property("id").in(1, 2, 3);
// events?id=in.(1,2,3)
Checks if the property is exactly equal to value
.
endpoint("events").property("id").is("null");
// events?id=is.null
All the logical transforms can be negated with the
not.
prefix.endpoint("events").not.or((obj) => obj.property("id").lessThan(10).property("id").not.equals(1) ); // events?not.or=(id.lt.10,id.not.eq.1)
Combines the transforms using the logical and
operator.
endpoint("events").and((obj) =>
obj.property("id").lessThan(10).property("id").not.equals(1)
);
// events?and=(id.lt.10,id.not.eq.1)
Combines the transforms using the logical or
operator.
endpoint("events").or((obj) =>
obj.property("id").lessThan(10).property("id").not.equals(1)
);
// events?or=(id.lt.10,id.not.eq.1)
Applies a sorting transform.
endpoint("events").order((obj) => obj.property("id").ascending);
// events?order=id.asc
Applies a sorting transform using a property.
endpoint("events").order((obj) => obj.property("id").ascending);
// events?order=id.asc
Sorts the returned objects in ascending order based on a property.
endpoint("events").order((obj) => obj.property("id").ascending);
// events?order=id.asc
Sorts the returned objects in descending order based on a property.
endpoint("events").order((obj) => obj.property("id").descending);
// events?order=id.desc
Makes the null values appear first.
endpoint("events").order(
(obj) => obj.property("id").ascending.property("id").nullsFirst
);
// events?order=id.asc.nullsfirst
Makes the null values appear last.
endpoint("events").order(
(obj) => obj.property("id").descending.property("id").nullsLast
);
// events?order=id.desc.nullslast