@sportdevs/endpoint v1.1.2
SportDevs Endpoint Utility
A request generation utility for the SportDevs APIs.
Installation
You can install this library using npm, it's available as the @sportdevs/endpoint package.
npm install @sportdevs/endpointUsage
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("matches")
.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);
// matches?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.descendpoint(name)
Creates an object that is associated with an endpoint.
endpoint("matches");toString()
Turns an endpoint object to a string.
endpoint("matches").toString();Response Transforms
offset(value)
Skips value amount of elements.
endpoint("matches").offset(1);
// events?offset=1limit(value)
Limits the response to value amount of objects.
endpoint("matches").limit(1);
// matches?limit=1select(...props)
Makes the returned object only contain the selected properties.
endpoint("matches").select("home_team_id", "away_team_id");
// matches?select=home_team_id,away_team_idProperty Transforms
All the property transforms can be negated using the
not.prefix.endpoint("matches").property("id").not.lessThan(10); // matches?id=not.lt.10
property(name)
Applies a transform using a property.
endpoint("matches").property("id").lessThan(10);
// matches?id=lt.10equals(value)
Checks if a property is equal to value.
endpoint("matches").property("id").equals(10);
// matches?id=eq.10greaterThan(value)
Checks if a property is greater than value.
endpoint("matches").property("id").greaterThan(10);
// matches?id=gt.10greaterThanOrEqual(value)
Checks if a property is greater than or equal to value.
endpoint("matches").property("id").greaterThanOrEqual(10);
// matches?id=gte.10lessThan(value)
Checks if a property is less than value.
endpoint("matches").property("id").lessThan(10);
// matches?id=lt.10lessThanOrEqual(value)
Checks if a property is less than or equal to value.
endpoint("matches").property("id").lessThanOrEqual(10);
// matches?id=lte.10like(exp)
Checks if a property matches a glob expression.
endpoint("players").property("first_name").like("A*");
// players?first_name=like.A*insensitive.like(exp)
Checks if a property matches a glob expression (case insensitive).
endpoint("players").property("first_name").insensitive.like("A*");
// players?first_name=ilike.A*match(exp)
Checks is a property matches a POSIX regular expression.
endpoint("players").property("first_name").match("^A");
// players?first_name=match.^Ainsensitive.match(exp)
Checks is a property matches a POSIX regular expression.
endpoint("players").property("first_name").insensitive.match("^A");
// players?first_name=imatch.^Ain(...values)
Checks if the property is inside the array value.
endpoint("matches").property("id").in(1, 2, 3);
// events?id=in.(1,2,3)is(value)
Checks if the property is exactly equal to value.
endpoint("matches").property("id").is("null");
// matches?id=is.nullLogical Transforms
All the logical transforms can be negated with the
not.prefix.endpoint("matches").not.or((obj) => obj.property("id").lessThan(10).property("id").not.equals(1) ); // matches?not.or=(id.lt.10,id.not.eq.1)
and(fn)
Combines the transforms using the logical and operator.
endpoint("matches").and((obj) =>
obj.property("id").lessThan(10).property("id").not.equals(1)
);
// matches?and=(id.lt.10,id.not.eq.1)or(fn)
Combines the transforms using the logical or operator.
endpoint("matches").or((obj) =>
obj.property("id").lessThan(10).property("id").not.equals(1)
);
// matches?or=(id.lt.10,id.not.eq.1)Sort Transforms
order(fn)
Applies a sorting transform.
endpoint("matches").order((obj) => obj.property("id").ascending);
// matches?order=id.ascproperty(name)
Applies a sorting transform using a property.
endpoint("matches").order((obj) => obj.property("id").ascending);
// matches?order=id.ascascending
Sorts the returned objects in ascending order based on a property.
endpoint("matches").order((obj) => obj.property("id").ascending);
// matches?order=id.ascdescending
Sorts the returned objects in descending order based on a property.
endpoint("matches").order((obj) => obj.property("id").descending);
// matches?order=id.descnullsFirst
Makes the null values appear first.
endpoint("matches").order(
(obj) => obj.property("id").ascending.property("id").nullsFirst
);
// matches?order=id.asc.nullsfirstnullsLast
Makes the null values appear last.
endpoint("matches").order(
(obj) => obj.property("id").descending.property("id").nullsLast
);
// matches?order=id.desc.nullslast