@sportdevs/endpoint
v1.0.0
Published
A request generation utility for the SportDevs APIs and other Postgrest-compatible APIs
Downloads
11
Readme
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/endpoint
Usage
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
endpoint(name)
Creates an object that is associated with an endpoint.
endpoint("events");
toString()
Turns an endpoint object to a string.
endpoint("events").toString();
Response Transforms
offset(value)
Skips value
amount of elements.
endpoint("events").offset(1);
// events?offset=1
limit(value)
Limits the response to value
amount of objects.
endpoint("events").limit(1);
// events?limit=1
select(...props)
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
Property Transforms
All the property transforms can be negated using the
not.
prefix.endpoint("events").property("id").not.lessThan(10); // events?id=not.lt.10
property(name)
Applies a transform using a property.
endpoint("events").property("id").lessThan(10);
// events?id=lt.10
equals(value)
Checks if a property is equal to value
.
endpoint("events").property("id").equals(10);
// events?id=eq.10
greaterThan(value)
Checks if a property is greater than value
.
endpoint("events").property("id").greaterThan(10);
// events?id=gt.10
greaterThanOrEqual(value)
Checks if a property is greater than or equal to value
.
endpoint("events").property("id").greaterThanOrEqual(10);
// events?id=gte.10
lessThan(value)
Checks if a property is less than value
.
endpoint("events").property("id").lessThan(10);
// events?id=lt.10
lessThanOrEqual(value)
Checks if a property is less than or equal to value
.
endpoint("events").property("id").lessThanOrEqual(10);
// events?id=lte.10
like(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.^A
insensitive.match(exp)
Checks is a property matches a POSIX regular expression.
endpoint("players").property("first_name").insensitive.match("^A");
// players?first_name=imatch.^A
in(...values)
Checks if the property is inside the array value
.
endpoint("events").property("id").in(1, 2, 3);
// events?id=in.(1,2,3)
is(value)
Checks if the property is exactly equal to value
.
endpoint("events").property("id").is("null");
// events?id=is.null
Logical Transforms
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)
and(fn)
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)
or(fn)
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)
Sort Transforms
order(fn)
Applies a sorting transform.
endpoint("events").order((obj) => obj.property("id").ascending);
// events?order=id.asc
property(name)
Applies a sorting transform using a property.
endpoint("events").order((obj) => obj.property("id").ascending);
// events?order=id.asc
ascending
Sorts the returned objects in ascending order based on a property.
endpoint("events").order((obj) => obj.property("id").ascending);
// events?order=id.asc
descending
Sorts the returned objects in descending order based on a property.
endpoint("events").order((obj) => obj.property("id").descending);
// events?order=id.desc
nullsFirst
Makes the null values appear first.
endpoint("events").order(
(obj) => obj.property("id").ascending.property("id").nullsFirst
);
// events?order=id.asc.nullsfirst
nullsLast
Makes the null values appear last.
endpoint("events").order(
(obj) => obj.property("id").descending.property("id").nullsLast
);
// events?order=id.desc.nullslast